diff --git a/src/README b/src/README index 0e4df39..5c04966 100644 --- a/src/README +++ b/src/README @@ -1,3 +1,7 @@ +--V1.14 -- +2015-12-29 +修正了common.c中对日志消息队列的操作,其中包括:交换log_prepare与log_writing>队列指针的bug;以及在写入log_prepare队列时未检查已写入消息是否大于队列长度的b +ug。修正了log_path(即日志文件名)不会随时间改变的bug。 --V1.13 -- 2015-12-23 修正在记录日志中检查目录时(在函数create_dir中),由于采用线程进行日志记录,多次调用get_nic_info可能会导致的将日志文件路径名变错的问题。在get_nic_info中判断log_path是否被初始化过,如过未初始化,则到共享内存中读取。否则,为初始化过,直接使用该值,并在create_dir中使用局部变量保存该值,在create_dir中使用操作该局部变量,而不去改变该全局变量的值。 diff --git a/src/sys_nicmonitor/README b/src/sys_nicmonitor/README index 0e4df39..5c04966 100644 --- a/src/sys_nicmonitor/README +++ b/src/sys_nicmonitor/README @@ -1,3 +1,7 @@ +--V1.14 -- +2015-12-29 +修正了common.c中对日志消息队列的操作,其中包括:交换log_prepare与log_writing>队列指针的bug;以及在写入log_prepare队列时未检查已写入消息是否大于队列长度的b +ug。修正了log_path(即日志文件名)不会随时间改变的bug。 --V1.13 -- 2015-12-23 修正在记录日志中检查目录时(在函数create_dir中),由于采用线程进行日志记录,多次调用get_nic_info可能会导致的将日志文件路径名变错的问题。在get_nic_info中判断log_path是否被初始化过,如过未初始化,则到共享内存中读取。否则,为初始化过,直接使用该值,并在create_dir中使用局部变量保存该值,在create_dir中使用操作该局部变量,而不去改变该全局变量的值。 diff --git a/src/sys_nicmonitor/common.c b/src/sys_nicmonitor/common.c index d7cecfd..e2e9a7d 100644 --- a/src/sys_nicmonitor/common.c +++ b/src/sys_nicmonitor/common.c @@ -46,25 +46,34 @@ static void *record_log_thread( void *arg ) FILE *log_fp = NULL; char **tmp = NULL; int i = 0; + LOGPATH_LOCK; + strcpy(tmp_path,log_path); + LOGPATH_UNLOCK; - create_dir( log_path ); +// create_dir( log_path ); + create_dir( tmp_path ); log_thread_exit = 0; // log_fp = fopen(log_path, "a"); - + while( !log_thread_exit ) { + LOGPATH_LOCK; + strcpy(tmp_path,log_path); + LOGPATH_UNLOCK; if( !log_fp ) { - LOGPATH_LOCK; - log_fp = fopen(log_path, "a"); - LOGPATH_UNLOCK; +// LOGPATH_LOCK; +// log_fp = fopen(log_path, "a"); + log_fp = fopen(tmp_path, "a"); +// LOGPATH_UNLOCK; } //prepare log strings LOG_LOCK; tmp = log_writing; log_writing = log_prepare; - log_prepare = log_writing; + // log_prepare = log_writing; + log_prepare = tmp; log_idx=0; LOG_UNLOCK; @@ -77,7 +86,8 @@ static void *record_log_thread( void *arg ) } if( log_fp ) { - fwrite( log_str, 1, strlen(log_str), log_fp ); //write to file +// fwrite( log_str, 1, strlen(log_str), log_fp ); //write to file + fwrite( log_str, strlen(log_str), 1, log_fp ); } free( log_str ); //free @@ -151,13 +161,18 @@ void record_log(char *str) pthread_create( &pid, NULL, record_log_thread, (void *)NULL ); } - keepstr = strdup( log_str ); - LOG_LOCK; - if( log_prepare ) { - log_prepare[log_idx] = keepstr; - log_idx++; - } + if(log_idx < MAX_LOG_COUNT){ + keepstr = strdup( log_str ); + if(!keepstr){ + LOG_UNLOCK; + return; + } + //LOG_LOCK; + if( log_prepare ) { + log_prepare[log_idx] = keepstr; + log_idx++; + } LOG_UNLOCK; } diff --git a/src/sys_nicmonitor/mnic.c b/src/sys_nicmonitor/mnic.c index ba6ace7..12c5b8d 100644 --- a/src/sys_nicmonitor/mnic.c +++ b/src/sys_nicmonitor/mnic.c @@ -986,11 +986,13 @@ static void *create_logfile(void *ptr) close(fd); } umask(mask_tmp); + strcpy(del_file[head++], log_path); LOGPATH_UNLOCK; old_mon = tmptr.tm_mon+1; old_day = tmptr.tm_mday; - strcpy(del_file[head++], log_path); + // strcpy(del_file[head++], log_path); + if(head == DAYS){ head = 0; del_flag = 1; diff --git a/src/sys_nicmonitor/nicinfo_shm.c b/src/sys_nicmonitor/nicinfo_shm.c index 297ccec..2009e69 100644 --- a/src/sys_nicmonitor/nicinfo_shm.c +++ b/src/sys_nicmonitor/nicinfo_shm.c @@ -328,14 +328,17 @@ int get_nic_info(char *nic_name, NETCARD_INFO *net_info) closedir(dir); #endif + memset(buf, 0, sizeof(buf)); + strftime(buf, sizeof(buf), "%Y%m%d_", &tmptr); + strcat(buf, "sys_nicmonitor.log"); + + LOGPATH_LOCK; s = strrchr(log_path, '/'); s++; *s = '\0'; - memset(buf, 0, sizeof(buf)); - strftime(buf, sizeof(buf), "%Y%m%d_", &tmptr); - strcat(buf, "sys_nicmonitor"); - strcat(buf, ".log"); strcat(log_path, buf); + LOGPATH_UNLOCK; + if((ret = init_nic_info()) == -1){ return -1; } diff --git a/src/sys_nicmonitor/version.h b/src/sys_nicmonitor/version.h index d3c5107..7f7620d 100644 --- a/src/sys_nicmonitor/version.h +++ b/src/sys_nicmonitor/version.h @@ -1,5 +1,5 @@ -// version=1.13 +// version=1.14 #ifndef MNIC_VERSION - #define MNIC_VERSION "1.13" + #define MNIC_VERSION "1.14" #endif