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 #include +#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; }