一、簡介
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; }
本文出自 “說話的白菜” 博客,請務必保留此出處http://speakingbaicai.blog.51cto.com/5667326/1274823