每个系统都需要日志记录,通过日志方便排错调试,管理运行时的异常。
而C++开源的日志库,待选的有 glog、log4cplus、log4cpp、log4cxx
目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。
其它两个都是三年前就没更新,没好感,暂不准备使用。
1.log4cplus
最新版本:1.1.0 2012-03-11
下载地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/1.1.0
功能全面,使用稍复杂。
代码示例:
- 01.#include <log4cplus/layout.h>
- 02.
- 03.#include <log4cplus/configurator.h>
- 04.
- 05.#include <iomanip>
- 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 <Warn> log message..." << a );
使用详情:点击打开链接
2.log4cxx
最新版本: 0.10.0 2008-04-03
下载地址:http://logging.apache.org/log4cxx/download.html
(log4cxx 是由JAVA实现的 log4j 开源的,用C++实现的一个开源库)
到官网下载了源码,需要打开工程自己编译成 dll文件,最主要的需要配置一下,可以写入一个.conf 文档。
然后在程序中加载下该.conf 配置档,就可以方便使用了,很便利。
.conf配置档
- # 设置root logger为DEBUG级别,使用了ca和fa两个Appender
- # ERROR、WARN、INFO、DEBUG
- log4j.rootLogger=DEBUG, fa, ca
-
- #对Appender fa进行设置:
- # 这是一个文件类型的Appender,
- # 其输出文件(File)为./output.log,
- # 输出方式(Append)为覆盖方式,
- # 输出格式(layout)为PatternLayout
- log4j.appender.fa=org.apache.log4j.RollingFileAppender
- log4j.appender.fa.File=/Log/DeviceGateway.log
- log4j.appender.fa.MaxFileSize=1MB
- log4j.appender.fa.MaxBackupIndex=10
- log4j.appender.fa.Threshold=INFO
- log4j.appender.fa.ImmediateFlush=true
- log4j.appender.fa.Append=true
- log4j.appender.fa.layout=org.apache.log4j.PatternLayout
- log4j.appender.fa.layout.ConversionPattern==%d %-5p %.16c - %m%n
-
- #对Appender ca进行设置:
- # 这是一个控制台类型的Appender
- # 输出格式(layout)为PatternLayout
- log4j.appender.ca=org.apache.log4j.ConsoleAppender
- log4j.appender.ca.Threshold=DEBUG
- log4j.appender.ca.layout=org.apache.log4j.PatternLayout
- log4j.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
下载地址:http://code.google.com/p/google-glog/downloads/list
使用方便,性能也不错。
Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。
Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似
代码示例:
- 01.#include <glog/logging.h>
- 02.
- 03.google::InitGoogleLogging(argv[0]);
- 04.
- 05.google::SetLogDestination(google::INFO,"./myInfo_");
- 06.
- 07.LOG(INFO) << "This is a <Warn> log message..." << i;
4. Log4cpp
最新版1.0.x 2007-09-03
下载地址: http://sourceforge.net/projects/log4cpp/files
感觉 跟 log4cplus类似,结构稍简单些,不过代码也不少写。
- 01.#include <log4cpp/Category.hh>
- 02.#include <log4cpp/PropertyConfigurator.hh>
- 03.#include <log4cpp/NDC.hh>
- 04.#include <log4cpp/FileAppender.hh>
- 05.#include <log4cpp/BasicLayout.hh>
- 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 <Warn> log message..." << i;
再推荐个Github上的一个日志库,即c-log库,挺好用的,最开始是一个朋友介绍的,项目地址是https://github.com/0xmalloc/c-log,最主要的特点是简单,快速、稳定和线程安全自由支持C\C++,想改什么改什么,而且对任何类型的mv或者rename切分支持都非常好。但它仅仅只支持日志级别的控制和简单的日志写入,并没有提供对于日志文件大小控制自动创建文件,若没有这方面的需求,该库还是值得考虑的。
仅仅只有log.c,log.h,macro_define.h文件。
转载:点击打开链接