diff --git a/c/tools/log/log.c b/c/tools/log/log.c index 3b9fc09..b271844 100644 --- a/c/tools/log/log.c +++ b/c/tools/log/log.c @@ -9,6 +9,34 @@ #include #include +int write_into_block(char *writein,char *org,int *length,int maxlength,char *logname) +{ + if(writein == NULL||org == NULL||length == NULL||logname == NULL) + return -1; + if(*length+strlen(org)next !=NULL) { @@ -120,7 +148,8 @@ int cleanup(log_manager *self) close(fd); } free(logbufbk); - logbuf = failback;//降级策略,堆空间不足时,使用预分配栈空间,保留最后一条日志 + logbuf = failback;//降级策略,堆空间不足时,使用预分配栈空间 + buf_length = 0; } if(logbuf != failback){ buf_lengthbk = buf_length; @@ -129,7 +158,7 @@ int cleanup(log_manager *self) } else { - buf_length = MAX_LOG_LENGTH; + write_into_block(logbuf,tobeclean->log,&buf_length,MAX_LOG_LENGTH,"log.txt"); } free(tobeclean); } @@ -151,8 +180,7 @@ int cleanup(log_manager *self) } } else{ - strcpy(logbuf,loc->log); - buf_length = strlen(logbuf); + write_into_block(logbuf,loc->log,&buf_length,MAX_LOG_LENGTH,"log.txt"); } if(logbuf == failback&&buf_length>MAX_LOG_LENGTH) logbuf[MAX_LOG_LENGTH-1] = '\0';