log4cpp-c++日志库

1.building log4cpp

./configure
make
make check
make install
安装完毕后,会在 /usr/local/ 里的include lib 文件夹里面看到了log4cpp 的头文件和库文件


2. log4cpp3个主要的组件:categories(类别)、appenders(附加目的地)、和 layouts(布局)。

layout类控制输出日志消息的显示样式(看起来像什么)。

appender类用来输出日志(被layout格式化后的)到一些设备上。appenderlayout的关系是layout附在appender上,appender类调用layout处理完日志消息后,记录到某个设备上。

category 类真正完成记录日志功能,两个主要组成部分是appenderspriority(优先级)。


3. 手动使用log4cpp的基本步骤如下:

实例化一个layout 对象;

初始化一个appender 对象;

layout对象附着在appender对象上;

调用log4cpp::Category::getInstance("name"). 实例化一个category对象;

appender对象附到category上(根据additivity的值取代其他appender或者附加在其他appender后);

设置category的优先级;

#include "log4cpp/Category.hh" 
#include "log4cpp/FileAppender.hh" 
#include "log4cpp/BasicLayout.hh" 
int main(int argc, char* argv[]) 
{ 
        // 1实例化一个layout 对象 
        log4cpp::Layout* layout =  
        new log4cpp::BasicLayout(); 
        // 2. 初始化一个appender 对象 
         log4cpp::Appender* appender = new  
              log4cpp::FileAppender("FileAppender", 
              "./test_log4cpp1.log"); 
         // 3. 把layout对象附着在appender对象上 
         appender->setLayout(layout); 
         // 4. 实例化一个category对象 
         log4cpp::Category& warn_log =  
        log4cpp::Category::getInstance("mywarn"); 
         // 5. 设置additivity为false,替换已有的appender 
        warn_log.setAdditivity(false); 
         // 5. 把appender对象附到category上 
         warn_log.setAppender(appender); 
         // 6. 设置category的优先级,低于此优先级的日志不被记录 
         warn_log.setPriority(log4cpp::Priority::WARN); 
         // 记录一些日志 
         warn_log.info("Program info which cannot be wirten"); 
         warn_log.debug("This debug message will fail to write"); 
         warn_log.alert("Alert info"); 
         // 其他记录日志方式 
         warn_log.log(log4cpp::Priority::WARN, "This will be a logged warning"); 
         log4cpp::Priority::PriorityLevel priority; 
         bool this_is_critical = true; 
         if(this_is_critical) 
                 priority = log4cpp::Priority::CRIT; 
         else 
                 priority = log4cpp::Priority::DEBUG; 
         warn_log.log(priority,"Importance depends on context"); 
           
         warn_log.critStream() << "This will show up << as "  
         << 1 << " critical message"  
         << log4cpp::CategoryStream::ENDLINE; 
         // clean up and flush all appenders 
         log4cpp::Category::shutdown(); 
         return 0; 
}

默认情况下,编译器只会使用/lib/usr/lib这两个目录下的库文件,虽然g++ -L/usr/local/lib虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这个库路径加上-Wl,-R,即添加g++参数“-Wl,-R动态库库路径”。

g++ log4cpp.cpp -llog4cpp -lpthread -Wl,-R/usr/local/lib

 

便利的开发工具-log4cpp快速使用指南:http://www.ibm.com/developerworks/cn/linux/l-log4cpp/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值