文章目录
日志简述
C/CPP的日志工具也很多,在之前的项目中用过的有以下几个:zlog、spdlog、log4cpp等。
zlog之前也介绍过,这个日志工具我在使用的时候遇到过2个问题:
1.多线程输出比较频繁的时候,切换文件时程序会挂掉;
2.有的平台下面,切换文件时,程序挂掉再无法启动,只能手动删除日志文件,或者不让日志输出到文件;
zlog使用是挺方便,也很快,就是有上面两个问题,所以后来考虑换掉。
spdlog之前也介绍过。这个也挺好用,只需要包含头文件即可,只是这个日志依赖于c++11,有些编译器比较老,不支持,c语言也无法使用。
今天要介绍的这个日志是easylogger,这个是c语言的版本,所以c/c++都可以用,这个日志官方提供的demo和文档比较全,我就不再多说了。
EasyLogger简介
主要是对其源文件的使用做个调整。将对其源码引用的操作单独做了一个Makefile,这样使用的时候只需要在项目代码的Makefile里引用一下它的
Makefile即可:
demo 的结构如下:
.
├── easylogger
│ ├── easylogger ---- 移植修改文件
│ │ ├── inc
│ │ └── port
│ └── source_code ----- 源码目录
│ ├── inc
│ ├── obj
│ ├── plugins
│ │ ├── file
│ │ └── flash
│ ├── port
│ └── src
├── main.c-bak --- 测试主函数代码
├── main.cpp --- 同main.c-bake
├── Makefile --- 测试代码Makefile(这个也是一个通用的Makefile)
├── Makefile.log --- 源码配置Makefile
└── out
这里将日志的相关文件与头文件路径在Makefile.log里封装好了,该目录下的Makefile为新增的Makefile,在这个Makefile里调用日志源码的Makefile.log,并添加目标文件,这样使用起来比较简单:
include ./Makefile.log #包含源码文件的makefile
OBJS+=$(LOG_OBJ) #添加目标文件
#编译测试
编译
执行make:
g++ -I./easylogger/easylogger/inc -I./easylogger/source_code/inc -I./easylogger/source_code/plugins/file -O0 -g3 -Wall -Wall -I. -c main.cpp -o out/main.o
main.cpp: In function ‘void test_elog()’:
main.cpp:80:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < sizeof(buf); i++)
^
gcc -I./easylogger