void InitLogger(bool daemonized)
{
if (daemonized)
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("/your/path/log4cplusd.conf"));
else
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("/your/path/log4cplus.conf"));
}
将这两个文件置于你的项目中,然后在 main 函数中调用 InitLogger() 初始化 log4cplus,再在需要加log的文件中包含Log.h即可。注意InitLogger函数的参数daemonized,该参数表示应用程序是否是守护进程(后台运行),一般我们开发的应用程序大多是守护进程(linux后台服务大多是守护进程),但调试的时候会前台运行,对于守护进程,我们只需要把日志记录到某个文件中就行了,而对于前台调试运行,我们就只需要将日志输出到控制台,所以这里是一点使用技巧。做到这点我们只需分别提供两个配置文件即可,"/your/path"就是你放置配置文件的地方,一般可以设为你应用程序部署的目录下的etc目录。
至此我们可以使用log4cplus了!以下是实际的日志输出效果:
[11/05/12 10:28:36,002 INFO ] - TCPDomain - TCPDomain()
[11/05/12 10:28:36,002 INFO ] - TCPDomain - Connect server success!
[11/05/12 10:28:36,002 TRACE] - Session - Thread run.
[11/05/12 10:28:46,006 ERROR] - TCPDomain - SelectRead time out!
[11/05/12 10:28:56,016 ERROR] - TCPDomain - SelectRead time out!
7 log4cplus交叉编译
对于嵌入式应用 ,有交叉编译这么一说。以上的介绍是基于PC的,如果你的平台是嵌入式平台如arm,则只需编译链接arm平台的log4cplus库即可,其它都一样。对于大多数autotools工程,其交叉编译方法大致如下:
./configure --prefix=/your/install/path --host=arm-linux CXX=your-toolkit-g++
make
make install
其中--prefix即指定你的安装目录,如/opt/log4cplus,--host指定目标平台,CXX指定你的交叉编译工具(确保shell环境能找到该工具)。编译安装完后可在安装目录找到arm版本的库文件。