异想天开

What's the true meaning of light, Could you tell me why

log4cplus日志库

日期:2014-05-05 17:43:39
  
最后更新日期:2015-07-10 10:15:43
【技术】
最后更新日期:2014-10-30
log4cplus日志库是一套优秀的开源的日志库,可以方便在你的程序里面打日志。这里给出一个快速的demo来演示它怎么使用。 1.下载编译安装
[code lang="cpp"]
wget "http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/1.1.3/log4cplus-1.1.3-rc2.zip" -O log4cplus.zip
unzip log4cplus.zip
cd log4cplus-1.1.3-rc2
./configure
make && make install
[/code]

2.demo
2.1在你的程序,包含头文件。
[code lang="cpp"]
#include <log4cplus/configurator.h>
#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
using namespace log4cplus;
[/code]

2.2在main的上面添加一个如下的实例,实例名字任意取一个,记得这个名字在接下来的步骤是要放到配置文件里面的。
[code lang="cpp"]
static log4cplus::Logger logger = log4cplus::Logger::getInstance("server");
[/code]

2.3main函数里面指示配置文件路径。
[code lang="cpp"]
PropertyConfigurator::doConfigure("./log4cpluscplus.properties");
[/code]

2.4配置文件里面的内容。
[code lang="cpp"]
log4cplus.rootLogger=DEBUG, R

log4cplus.appender.STDOUT=log4cplus::ConsoleAppender
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout
log4cplus.appender.STDOUT.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} [%t] %-5p %c{2} %%%x%% - %m [%l]%n

log4cplus.appender.R=log4cplus::RollingFileAppender
log4cplus.appender.R.File=/var/log/test.log
log4cplus.appender.R.Append=false
log4cplus.appender.R.MaxFileSize=50000KB
log4cplus.appender.R.MaxBackupIndex=20
log4cplus.appender.R.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} - %m [%l]%n
log4cplus.appender.R.layout=log4cplus::PatternLayout

log4cplus.logger.server=DEBUG
[/code]
这个配置文件指示了日志级别为debug,两个appender,一个输出到终端的STDOUT,另外一个输出到日志的R,但起作用的只有appender R,只有一个实例,log4cplus.logger.XXXX,XXXX就是开始定义那个server实例。
奇怪的是,配置log4cplus::TTCCLayout并没有按线程号,日期等格式输出。


2.5测试程序
[code lang="cpp"]
#include <log4cplus/configurator.h>
#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
using namespace log4cplus;

static log4cplus::Logger logger = log4cplus::Logger::getInstance("server");
//g++ -g -I/usr/local/include test3.cpp -lrt -lpthread /usr/local/lib/liblog4cplus.a -o test3
int main()
{
PropertyConfigurator::doConfigure("./log4cpluscplus.properties");
LOG4CPLUS_DEBUG(logger,"test log");
return 0;
}
[root@localhost]# tail /var/log/test.log
10/31/14 01:38:29 - test log [test.cpp:11]
[/code]
注意日志库要加上依赖库-lrt,-lpthread。
参考:
1.http://my.oschina.net/lovecxx/blog/185951#OSC_h3_10
PS:
1.注意配置文件的设置也可以用代码来设置,不过实践过程中,不习惯这样用,用额外的代码处理日志控制,显得会污染代码。非特殊情况,还是用一个配置文件搞定比较好。
2.无论是不是开源软件,可能库的内部版本会有变化,导致代码会有问题。coder还是要习惯它这些变化。