1,日志库的源码实现:
//文件标准:封装接口:int write_log(int level,char* file_name_path,char* fmt,...)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<pthread.h>
#include<unistd.h>
#include<assert.h>
#include<string.h>
#include <stdarg.h>
#define MAX_LENGTH 1024
#define PATH_MAX_LEN 256
//打印等级
typedef enum print_level
{
CRIT,//紧急
ERR,
NOTICE,
WARNING,
INFO
}PRINT_LEVEL;
typedef struct log_file
{
pthread_mutex_t mutex_locallog_write; /* 写日志锁 */
unsigned int uiwrt_file_cnt; /* 写计数 */
char module_logfile_path[PATH_MAX_LEN]; /***日志文件路径或者日志名***/
char write_buf[MAX_LENGTH];//写的内容
PRINT_LEVEL log_level; //打印等级
}LOG_FILE;
int write_buffer2file(LOG_FILE* log_file)
{
FILE* fp = NULL;
if(log_file == NULL)
{
printf("file = %s, function = %s return error line = %d\n",__FILE__,__FUNCTION__,__LINE__);
return -1;
}
pthread_mutex_lock(&log_file-