Log4cpp是个开源的日志跟踪项目,它是运行在c环境下的。
由于Java的日志处理跟踪项目log4j的效果很好,所以把它移植到c,并保持了API上的一致。其类的支持库还包括C(log4c)、python(log4p)、c#(log4net)等。因为之前使用过log4net,相比之下,感觉log4cpp的使用还是复杂一些。
目前接触到的东西不多,主要使用Log4cpp的Category(种类)、Appender(附加目的地)和Layout(布局)三个方面,对于Priority(优先级)和NDC(嵌套的诊断上下文)等方面还有待进一步学习。
二 下载
如果想使用log4xx,可以到如下地址下载:
下载地址:
三 解压与编译
下载之后,首先要进行解压缩。在linux环境下,执行如下语句(本人下载的log4cpp-1.1.2rc1.tar.gz版本):
tar zxvf log4cpp-1.1.2rc1.tar.gz
解压缩以后,就开始进行编译过程了。在windows系统下,可以找到合适的vs版本环境打开,删除除了log4cppLib、log4cpp目录外的所有testXXX solution(不删除会报错)。如果是在linux系统下,则进入到解压后的文件,执行以下命令即可:
./configure
make
make install
四 生成结果
在windos下编译成功之后,在log4cppLib或者log4cpp的debug目录下会生成相应的lib文件,即log4cpp.lib、log4cppD.lib,在以后的编程中将要用到这些文件。
在linux编程成功之后,在/usr/local/lib/目录下,会生成liblog4cpp.so(默认情况下)
五 简单的demo
通过配置文件log4cpp.conf说明配置,具体配置如下:
#log4cpp配置文件
#定义Root category的属性
log4cpp.rootCategory=DEBUG, RootLog
#定义RootLog属性
log4cpp.appender.RootLog=FileAppender
log4cpp.appender.RootLog.fileName= E:\
log4cpp.appender.RootLog.layout=PatternLayout
log4cpp.appender.RootLog.layout.ConversionPattern=%d [%p] - %m
配置完成后,就可以在代码中加载,具体代码如下:
log4cpp::PropertyConfigurator::configure("./log4cpp.conf");
然后我们可以通过log4cpp::Category& root = log4cpp::Category::getRoot();获得具体的category对象了。log4cpp
最后的使用root.info(“This is a test!”);
六 问题
在linux环境下,可能会遇到各种奇葩的问题,简单的总结以下。
首先,在我们用g命令编译的时候,可能会出现链接错误。对于这个问题,我试了好多办法,然而并没有什么卵用。原来编译的时候要用-l参数指定log4cxx命名空间。具体如下:
g -llog4ccpp -o demo.out demo.cpp
这样就会产生demo.out可执行文件了。
在执行的时候,还遇到如下面的错误:
./demo.out: error while loading shared libraries: liblog4cpp.so.10:cannot open shared object file: No such file or directory
这个问题是因为你没有设置LD_LIBRARY_PATH环境变量造成的,可以执行如下命令解决:
export LD_LIBRARY_PATH=/usr/local/lib
七 总结
log4cpp的学习过程还在进行,以后再继续更新。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23408-1.html