1.下载
https://github.com/rxi/log.c
2.日志等级
log_trace(const char *fmt, ...);
log_debug(const char *fmt, ...);
log_info(const char *fmt, ...);
log_warn(const char *fmt, ...);
log_error(const char *fmt, ...);
log_fatal(const char *fmt, ...);
3.如何使用
3.1.logTest1.c
#include "log.h"
#include <time.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
//设置标准打印日志等级,所有低于这个等级的日志都不会被输出到stderr
log_set_level(0);
//设置静默模式,此模式不会有任何log被输出到stderr
log_set_quiet(0);
time_t t; // 定义一个 time_t 类型的变量 t
struct tm *tm; // 定义一个 tm 结构体指针 tm
char filename[20]; // 定义一个字符数组 filename,用来存储文件名
t = time(NULL); // 调用 time 函数获取系统当前时间,并赋值给 t
tm = localtime(&t); // 调用 localtime 函数将 t 转换为本地时间,并赋值给 tm
FILE *fp1, *fp2;
sprintf(filename, "Info%d-%d-%d %d:%02d:%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); // 调用 sprintf 函数将 tm 中的信息格式化为字符串,并赋值给 filename
fp1 = fopen(filename, "ab");
if(fp1 == NULL)
return -1;
sprintf(filename, "Error%d-%d-%d %d:%02d:%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); // 调用 sprintf 函数将 tm 中的信息格式化为字符串,并赋值给 filename
fp2 = fopen(filename, "ab");
if(fp2 == NULL)
return -1;
log_add_fp(fp1, LOG_INFO);
log_add_fp(fp2, LOG_ERROR);
log_debug("debug");
log_info("info");
log_warn("warn");
fclose(fp2);
fclose(fp1);
return 0;
}
3.2.makefile
CC = gcc
OBJ = log.o
CFLAGS = -I./log.c-master/src/
logTest1:$(OBJ)
$(CC) logTest1.c $(OBJ) -o logTest1 $(CFLAGS) -DLOG_USE_COLOR
log.o:
$(CC) ./log.c-master/src/log.c -c
clean:
rm -rf $(OBJ) logTest1
.PHONY: clean ALL