log4cplus日志库的安装使用

一、简介
        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;
}


你可能感兴趣的:(日志,log4cplus)