diff options
| author | 杨威 <[email protected]> | 2019-07-15 11:15:00 +0800 |
|---|---|---|
| committer | 杨威 <[email protected]> | 2019-07-15 11:15:00 +0800 |
| commit | eae1ebe9e9fcd749bd04c614311d19348d0f8b21 (patch) | |
| tree | 3b0353316cfafc33ddc2bdb8f55a60df6743e92b | |
| parent | f17652613e3b58f7ffe250091730288495ee73e1 (diff) | |
| parent | 17148f2e035c698dbae434f1b871911660945f2b (diff) | |
Merge branch 'Hotfix-issue-3' into 'master'
1、修复 #3 问题
See merge request MESA_framework/MESA_handle_logger!5
| -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; } |
