一、简介
log4cplus是一个C++编写的开源日志库,功能全面,一句话概括就是:开发者可以以自定义的格式将日志记录到自定义的位置上。
log4cplus其前身是java编写的log4j,属于Apache项目,作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期;开发者可以选择将信息输出到屏幕、文件。
相比于之前用过的glog,个人觉得log4cplus最大的好处是全面灵活,开发者可以自定义写入日志的文件,避免glog产生海量的日志小文件。
二、安装
1、下载:http://log4cplus.sourceforge.net/index.html
本人下载的时1.1.1版本
2、解压安装:
tar xvzf log4cplus-x.x.x.tar.gz
cd log4cplus-x.x.x
./configure --prefix=/where/to/install
make
make install
注意: 编译时要加-llog4cplus
三、组成
1、Appenders:挂接器,决定接收日志的设备,如控制台、文件、网络等。
2、Layouts:布局器,控制输出消息的格式.
3、Logger:日志记录器,日志对象。
4、Filter:过滤器,解决哪些信息需要输出的问题,比如DEBUG,WARR,INFO等的输出控制。
5、Priorities :优先权,包括TRACE, DEBUG, INFO, WARNING, ERROR, FATAL。
息。
四、代码示例
#include <iostream> #include <log4cplus/logger.h> #include <log4cplus/loggingmacros.h> #include <log4cplus/configurator.h> #include <log4cplus/fileappender.h> #include <log4cplus/consoleappender.h> #include <log4cplus/layout.h> // using namespace log4cplus; // using namespace log4cplus::helpers; using std::cout; using std::endl; using std::auto_ptr; using std::string; using log4cplus::Logger; using log4cplus::ConsoleAppender; using log4cplus::FileAppender; using log4cplus::Appender; using log4cplus::Layout; using log4cplus::PatternLayout; using log4cplus::helpers::SharedObjectPtr; int main () { /* step 1: Instantiate an appender object */ SharedObjectPtr<Appender> append(new FileAppender("master.log")); append->setName(LOG4CPLUS_TEXT("append for master")); /* step 2: Instantiate a layout object */ auto_ptr<Layout> layout(new PatternLayout(LOG4CPLUS_TEXT("%d{%m/%d/%y %H:%M:%S} %p [%l]: %m %n"))); /* step 3: Attach the layout object to the appender */ append->setLayout(layout); /* step 4: Instantiate a logger object */ Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("master")); /* step 5: Attach the appender object to the logger */ logger.addAppender(append); /* step 6: Set a priority for the logger */ logger.setLogLevel(log4cplus::ALL_LOG_LEVEL); LOG4CPLUS_DEBUG(logger, "This is the FIRST log message"); return 0; }