diff options
| author | yangwei <[email protected]> | 2019-07-15 11:13:28 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2019-07-15 11:13:28 +0800 |
| commit | 17148f2e035c698dbae434f1b871911660945f2b (patch) | |
| tree | e8929f010df2297c07898b8837d6839e48e15541 | |
| parent | d9499b58eb34c78b88f932e23b7508cdcb7a4733 (diff) | |
1、修复 #3 问题
2、fflush频度更新为每4096条日志执行一次
| -rw-r--r-- | src/MESA_handle_logger.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/MESA_handle_logger.c b/src/MESA_handle_logger.c index b12e193..7e7724c 100644 --- a/src/MESA_handle_logger.c +++ b/src/MESA_handle_logger.c @@ -8,14 +8,18 @@ #include <unistd.h> #include<sys/stat.h> +#define LOGMSG_MAX_LEN 4096 +#define FLUSH_LOG_NUM 4096 typedef struct log_handle_t { int runtime_log_level; + int flush_log_count; FILE *fp; char runtime_log_file[1200]; + char cur_log_file[LOGMSG_MAX_LEN]; } log_handle_t; -#define LOGMSG_MAX_LEN 4096 + //const int HANDLE_LOGGER_VERSION_20190218 = 1; @@ -201,12 +205,22 @@ void MESA_handle_runtime_log(void *handle, int level, const char *module, const local_time.tm_year + 1900, local_time.tm_mon + 1, local_time.tm_mday); +OPEN_LOG_FILE: if(p_handle->fp == NULL) { if(NULL == (fp = fopen(tmp_log_file_name, "a"))) return; - p_handle->fp = fp; + p_handle->flush_log_count = 0; + memcpy(p_handle->cur_log_file, tmp_log_file_name, strlen(tmp_log_file_name)); + } + + if (0 != memcmp(tmp_log_file_name, p_handle->cur_log_file, strlen(tmp_log_file_name))) + { + fclose(p_handle->fp); + p_handle->fp = NULL; + goto OPEN_LOG_FILE; } + if (0 > fprintf(p_handle->fp, "%s", buf)) { fclose(p_handle->fp); @@ -214,8 +228,14 @@ void MESA_handle_runtime_log(void *handle, int level, const char *module, const } else { - fflush(p_handle->fp); - } + p_handle->flush_log_count+=1; + if (p_handle->flush_log_count >= FLUSH_LOG_NUM) + { + fflush(p_handle->fp); + p_handle->flush_log_count = 0; + } + } + return; } |
