使用log4cplus作为C++应用程序的日志功能

简介

我在写一个小工具时,出于一些调试目的,会使用一些cout输出一些关键变量和相关DEBUG信息,但是多线程的情况下,输出无序混杂,并且影响代码整体结构,后续还是需要删除,我受够了cout,于是决定使用一个正规的日志库作为我的调试观察之用。 以前在JAVA项目中,我一直使用log4j作为我的日志组件,所以在C++下面我使用了她的姐妹版,log4cplus。

log4cplus的编译安装

起初我使用sudo yum install log4cplus的命令安装,但是安装完后发现只有二进制文件,没有头文件,所以直接采用源码进行安装。 此处需要注意的是,最新版本的log4cplus需要C++11支持,如果您的环境不支持C++11,请选择较低版本,此处我采用的版本是log4cplus-1.1.1
log4cplus-1.1.1目录

安装办法

./configure  
make
make install

可以在目录/usr/local/lib中看到liblog4cplus的二进制文件.

log4cplus使用

此处我对log4cplus的设置基于配置文件,并在代码中指定配置文件进行初始化。

log4cplus::PropertyConfigurator::doConfigure((LOG4CPLUS_TEXT("log.properties")));  
log4cplus::Logger::getRoot().setLogLevel(log4cplus::ALL_LOG_LEVEL);

配置信息如下

log4cplus.rootLogger=INFO, console, file

log4cplus.appender.console = log4cplus::ConsoleAppender  
log4cplus.appender.console.layout = log4cplus::PatternLayout  
log4cplus.appender.console.layout.ConversionPattern = [%D{%m/%d/%y %H:%M:%S,%q} %-5p] - %m%n  

log4cplus.appender.file = log4cplus::FileAppender  
log4cplus.appender.file.File = /var/log/S3Sync.log  
log4cplus.appender.file.MaxFileSize = 50M  
log4cplus.appender.file.Append = true  
log4cplus.appender.file.layout = log4cplus::PatternLayout  
log4cplus.appender.file.layout.ConversionPattern = [%D{%m/%d/%y %H:%M:%S,%q} %-5p] - %m%n

在需要进行日志输出的地方,进行输出

Logger logger = log4cplus::Logger::getRoot();

LOG4CPLUS_ERROR(logger, "src Conn init failed. srcHost:"<< cfg->srcHost  
<<" srcAccessKey: " << cfg->srcAccessKey  
<<" srcSecretKey: " << cfg->srcSecretKey);
LOG4CPLUS_INFO(logger, "src Conn init succeed. srcHost:" << cfg->srcHost  
<<" srcAccessKey: " << cfg->srcAccessKey  
<<" srcSecretKey: " << cfg->srcSecretKey);

结束

我在配置文件中同时配置了stdout和file,所以程序在运行的时候既可以在控制台输出,同时也写入到文件中。
我在使用的时候,也只使用了root类型,在JAVA中,我们常用的方法是在每个类中都定义一个logger,只为该类服务。在C++中同样可以借鉴。

转载于:https://my.oschina.net/myspaceNUAA/blog/691230

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值