修正了common.c中对日志消息队列的操作,其中包括:交换log_prepare与log_writing>队列指针的bug;以及在写入log_prepare队列时未检查已写入消息是否大于队列长度的b

ug。修正了log_path(即日志文件名)不会随时间改变的bug。
This commit is contained in:
钟安
2015-12-29 10:44:45 +08:00
parent e2d3d3b800
commit f149505a40
6 changed files with 48 additions and 20 deletions

View File

@@ -1,3 +1,7 @@
--V1.14 --
20151229
修正了common.c中对日志消息队列的操作其中包括交换log_prepare与log_writing>队列指针的bug以及在写入log_prepare队列时未检查已写入消息是否大于队列长度的b
ug。修正了log_path(即日志文件名不会随时间改变的bug。
--V1.13 --
20151223
修正在记录日志中检查目录时在函数create_dir中由于采用线程进行日志记录多次调用get_nic_info可能会导致的将日志文件路径名变错的问题。在get_nic_info中判断log_path是否被初始化过如过未初始化则到共享内存中读取。否则为初始化过直接使用该值,并在create_dir中使用局部变量保存该值在create_dir中使用操作该局部变量而不去改变该全局变量的值。

View File

@@ -1,3 +1,7 @@
--V1.14 --
20151229
修正了common.c中对日志消息队列的操作其中包括交换log_prepare与log_writing>队列指针的bug以及在写入log_prepare队列时未检查已写入消息是否大于队列长度的b
ug。修正了log_path(即日志文件名不会随时间改变的bug。
--V1.13 --
20151223
修正在记录日志中检查目录时在函数create_dir中由于采用线程进行日志记录多次调用get_nic_info可能会导致的将日志文件路径名变错的问题。在get_nic_info中判断log_path是否被初始化过如过未初始化则到共享内存中读取。否则为初始化过直接使用该值,并在create_dir中使用局部变量保存该值在create_dir中使用操作该局部变量而不去改变该全局变量的值。

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -1,5 +1,5 @@
// version=1.13
// version=1.14
#ifndef MNIC_VERSION
#define MNIC_VERSION "1.13"
#define MNIC_VERSION "1.14"
#endif