由于上一文章已经讲述了如何在VS2010下编译log4cxx源码,将会生成两个文件:log4cxx.lib 和 log4cxx.dll。编译时导入该lib文件,运行时,需要确保该dll文件在程序运行目录或系统目录下即可。
下面来介绍一下该日志组件的使用,如果你是初次接触log4cxx,恭喜你,可以继续往下走,并可能得到一些帮助哦,那高手呢,就路过吧。(注:本人水平不限,疏忽之处再所难免,欢迎拍砖。)
1. 概况: 要想使用log4cxx日志组件,除了需要上述两个文件外,还需要一个文本配置文件,一般命名为 logging.properties,loggging.config 等相关便于识别的字样。还就是在程序中导入相应的头文件,使用cofigure加载配置文件,然后得到一个LoggerPtr的指针,再进行日志的输入即可。日志的输入格式以及输入到哪儿,均是在配置文件中指定的。
2. 配置文件简介:首先,配置文件格式大概如下所示,你可以按照要求格式自己写,也可以从其它地方copy一个过来。这里也做一些简单的介绍。一个配置文件中可能包含多个以下文本段,一般以后这么些行文本表示一个logger,即在你的项目中,可能会把不同的项目功能分支,输出到不同的日志里,在些指定多个logger及输入文件即可。下面来简单介绍一下其中一些行的含意:
1log4j.logger.TradeServer=DEBUG, B
2#log4j.appender.B=org.apache.log4j.RollingFileAppender
3log4j.appender.B=org.apache.log4j.DailyRollingFileAppender
4log4j.appender.B.File=log/myclient.log
5#log4j.appender.B.MaxFileSize=5000KB
6#log4j.appender.B.MaxBackupIndex=10
7log4j.appender.B.DatePattern='.'yyyy-MM-dd
8log4j.appender.B.layout=org.apache.log4j.PatternLayout
9 log4j.appender.B.layout.ConversionPattern=%d{ISO8601} %5p %-11c{1} - %m%n 行1:指定了logger的名字为"
TradeServer", 即在程序代码中可以这样得到此logger:
log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("TradeServer"); 然后还指定了该logger为DEBUG级别,
以及一个appender:"B", 可以观察到接下来2-9行,均有".appender.B"字样。至于关于更详细配置信息的讲解,百度一下。
行4:日志将会输出到程序要目录下的 log 目录下的
myclient.log 文件中,当然可以改为你喜欢的日志文件名。
行7:为日志输出的时间格式
行8:使用何种日志方式,log4cxx默认有几种layout,这里就不介绍了
行9:为日志信息输出的格式
2. 配置文件写好后,假如文件名为:
logging.config ,文件名将在程序代码中加载log4cxx的配置文件时使用,比如:
log4cxx::PropertyConfigurator::configure("conf/
logging.config");
3. 示例代码:
1// load the configure file
2log4cxx::PropertyConfigurator::configure(_T("conf/logging.properties"));
3// get the "TradeServer" logger
4log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("TradeServer");
5// log info
6//LOG4CXX_INFO(log4cxx::Logger::getLogger("TradeServer"), "Trade Server running...");
7LOG4CXX_INFO(logger, "Trade Server running...");
8// log error
9LOG4CXX_ERROR(logger, "run: error=" << rv << ", errbuf=" << errbuf); 上述第2行在程序运行时加载配置即可,第4行可以作为全局logger,即可以其它地方使用了。在宏的logger后面,可以使用流操作符写信息,很方便的哦(其实个人感觉有时候不太方便!),另外还有一些其它级别的logger,如LOG4CXX_AAA等,具体可以百度的。
4. Log4cxx的简单使用就介绍到这儿啦。log4cxx功能很强大,也还有很多东西我在这儿也没介绍到,还需要多研究学习。但简单的使用是不是并没有想象中的那么难啊~