博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++开源日志库选择
阅读量:4166 次
发布时间:2019-05-26

本文共 2969 字,大约阅读时间需要 9 分钟。

每个系统都需要日志记录,通过日志方便排错调试,管理运行时的异常。

而C++开源的日志库,待选的有 glog、log4cplus、log4cpp、log4cxx

目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。

其它两个都是三年前就没更新,没好感,暂不准备使用。

1.log4cplus

最新版本:   2012-03-11

下载地址:

功能全面,使用稍复杂。

代码示例:

01.#include 
02. 03.#include
04. 05.#include
06. 07.SharedAppenderPtr pFileAppender(new FileAppender("testlog.log")); 08. 09.Logger pTestLogger = Logger::getInstance("LoggerName"); 10. 11.pTestLogger.addAppender(pFileAppender); 12. 13.sprintf(a,"%d",i); 14. 15.LOG4CPLUS_WARN(pTestLogger, "This is a
log message..." << a );

使用详情:

 

2.log4cxx

最新版本:   2008-04-03

下载地址:

(log4cxx 是由JAVA实现的 log4j 开源的,用C++实现的一个开源库)

到官网下载了源码,需要打开工程自己编译成 dll文件,最主要的需要配置一下,可以写入一个.conf 文档。

然后在程序中加载下该.conf 配置档,就可以方便使用了,很便利。

.conf配置档

# 设置root logger为DEBUG级别,使用了ca和fa两个Appender# ERROR、WARN、INFO、DEBUGlog4j.rootLogger=DEBUG, fa, ca#对Appender fa进行设置:# 这是一个文件类型的Appender,# 其输出文件(File)为./output.log,# 输出方式(Append)为覆盖方式,# 输出格式(layout)为PatternLayoutlog4j.appender.fa=org.apache.log4j.RollingFileAppenderlog4j.appender.fa.File=/Log/DeviceGateway.loglog4j.appender.fa.MaxFileSize=1MBlog4j.appender.fa.MaxBackupIndex=10log4j.appender.fa.Threshold=INFOlog4j.appender.fa.ImmediateFlush=truelog4j.appender.fa.Append=truelog4j.appender.fa.layout=org.apache.log4j.PatternLayoutlog4j.appender.fa.layout.ConversionPattern==%d %-5p %.16c - %m%n#对Appender ca进行设置:# 这是一个控制台类型的Appender#  输出格式(layout)为PatternLayoutlog4j.appender.ca=org.apache.log4j.ConsoleAppenderlog4j.appender.ca.Threshold=DEBUGlog4j.appender.ca.layout=org.apache.log4j.PatternLayoutlog4j.appender.ca.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %r %x %.16c - %m%n

 

3. glog

最新版本: 0.3.2  2012-1-12

下载地址:

使用方便,性能也不错。

Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。

  Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++stream操作类似

代码示例:

01.#include 
02. 03.google::InitGoogleLogging(argv[0]); 04. 05.google::SetLogDestination(google::INFO,"./myInfo_"); 06. 07.LOG(INFO) << "This is a
log message..." << i;

4. Log4cpp

 最新版1.0.x   2007-09-03

下载地址: 

感觉 跟 log4cplus类似,结构稍简单些,不过代码也不少写。

01.#include 
02.#include
03.#include
04.#include
05.#include
06.log4cpp::Layout* layout = new log4cpp::BasicLayout(); 07.log4cpp::Appender* appender = new log4cpp::FileAppender("FileAppender", "./test_log4cpp1.log"); 08.appender->setLayout(layout); 09.log4cpp::Category& warn_log = log4cpp::Category::getInstance("mywarn"); 10.warn_log.setAdditivity(false); 11.warn_log.setAppender(appender); 12.warn_log.setPriority(log4cpp::Priority::WARN); 13.warn_log.critStream() << "This is a
log message..." << i;

再推荐个Github上的一个日志库,即c-log库,挺好用的,最开始是一个朋友介绍的,项目地址是,最主要的特点是简单,快速、稳定和线程安全自由支持C\C++,想改什么改什么,而且对任何类型的mv或者rename切分支持都非常好。但它仅仅只支持日志级别的控制和简单的日志写入,并没有提供对于日志文件大小控制自动创建文件,若没有这方面的需求,该库还是值得考虑的。

仅仅只有log.c,log.h,macro_define.h文件。

转载:

你可能感兴趣的文章
调用malloc时发生了什么
查看>>
自己动手写内存分配函数malloc
查看>>
linux C之alarm函数
查看>>
如何自实现一个malloc函数(指定区间分配)
查看>>
sscanf中%s用法
查看>>
ps -aux中STAT列的标志位
查看>>
Linux fork() vfork()
查看>>
setsid的作用
查看>>
signal(SIGCHLD, SIG_IGN)
查看>>
vs2010如何引用相对路径
查看>>
Linux 下的KILL函数的用法
查看>>
return EXIT_SUCCESS
查看>>
linux下c程序调用reboot函数实现直接重启
查看>>
select实现延时的功能
查看>>
Linux进程间通信——使用消息队列
查看>>
Linux 消息队列命令
查看>>
atoi、stoi、strtoi区别
查看>>
正确使用memset
查看>>
fopen()、fwrite()、fread()函数使用说明与示例
查看>>
Linux 里有/lib和/usr/lib各个目录含义
查看>>