博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速使用Log4Cpp
阅读量:4953 次
发布时间:2019-06-12

本文共 3228 字,大约阅读时间需要 10 分钟。

封了一下接口,快速使用。

其他的你都不用管了。

这里封装了需要读取外部conf文件配置输出项。否则可以用getInstance初始化日志类

#include "L4Cpp.h"void CTestAgainDlg::OnBnClickedButton1(){    L4Cpp::get()->warn("eeeeeeeee");}

 

下面展示了封装以及引用结构

 

1 #pragma once 2 #include "L4Cpp/Category.hh" 3  4 class L4Cpp 5 { 6 private: 7     L4Cpp(){}; 8     static log4cpp::Category* root; 9 10 public:11     //获得日志仓库12     static log4cpp::Category* get();13     static void defaultFileInstance();14     static void defaultSteamInstance();15 };
L4Cpp.h
1 //LogFacade.cpp如下: 2  3 #include "StdAfx.h" 4 #include "L4Cpp.h" 5  6  7 #include "L4Cpp/Appender.hh" 8 #include "L4Cpp/FileAppender.hh" 9 #include "L4Cpp/OstreamAppender.hh"10 #include "L4Cpp/NTEventLogAppender.hh"11 #include "L4Cpp/StringQueueAppender.hh"12 #include "L4Cpp/RollingFileAppender.hh"13 //#include "L4Cpp/SyslogAppender.hh"14 #include "L4Cpp/Layout.hh"15 #include "L4Cpp/BasicLayout.hh"16 #include "L4Cpp/SimpleLayout.hh"17 #include "L4Cpp/PatternLayout.hh"18 #include "L4Cpp/BasicConfigurator.hh"19 #include "L4Cpp/PropertyConfigurator.hh"20 #include "L4Cpp/Priority.hh"21 #include "L4Cpp/NDC.hh"22 23 #include 
24 25 26 #pragma comment(lib,"log4cpp.lib")27 28 log4cpp::Category* L4Cpp::root = NULL;29 30 log4cpp::Category* L4Cpp::get() 31 {32 if (!root)33 {34 //debug模式下,配置没找到会跳出runtime 异常,貌似捕获不了。考虑把那里注掉或换成logic_error35 try { 36 log4cpp::PropertyConfigurator::configure("./log4cpp1.conf");37 root = &log4cpp::Category::getRoot();38 } catch(std::runtime_error e) {39 //读不到配置文件不操作40 //但外部调用并不会出错41 }42 }43 return root;44 }45 46 //加载默认配置,输出到同级目录中的logging.log文件47 void L4Cpp::defaultFileInstance(){48 if (!root)49 {50 log4cpp::Layout* layout = new log4cpp::BasicLayout(); // 1实例化一个layout 对象51 log4cpp::Appender* appender = new log4cpp::FileAppender("FileAppender", "./hgsoft.log"); // 2. 初始化一个appender 对象52 appender->setLayout(layout); // 3. 把layout对象附着在appender对象上53 root = &log4cpp::Category::getRoot();// 4. 实例化一个category对象54 root->setAdditivity(false); // 5. 设置additivity为false,替换已有的appender55 root->setAppender(appender); // 5. 把appender对象附到category上56 root->setPriority(log4cpp::Priority::DEBUG); // 6. 设置category的优先级,低于此优先级的日志不被记录57 }58 } 59 60 void L4Cpp::defaultSteamInstance(){61 if (!root)62 {63 log4cpp::Layout* layout = new log4cpp::BasicLayout(); // 1实例化一个layout 对象64 log4cpp::Appender* appender = new log4cpp::OstreamAppender("ostream",&std::cout); // 2. 初始化一个appender 对象65 appender->setLayout(layout); // 3. 把layout对象附着在appender对象上66 root = &log4cpp::Category::getRoot();// 4. 实例化一个category对象67 root->setAdditivity(false); // 5. 设置additivity为false,替换已有的appender68 root->setAppender(appender); // 5. 把appender对象附到category上69 root->setPriority(log4cpp::Priority::DEBUG); // 6. 设置category的优先级,低于此优先级的日志不被记录70 }71 }
L4Cpp.cpp

 

文件引用架构

还需要改动的地方是原本

#include <log4cpp/****.hh>

需要转换成 引用本地的头文件

#include "L4Cpp/****.hh"

库文件在L4Cpp.cpp中通过#pragma comment(lib,"log4cpp.lib") 引用了

 

 

拓展阅读:

转载于:https://www.cnblogs.com/Again/p/5394139.html

你可能感兴趣的文章
coco2dx服务器简单例子
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
Windows Azure Platform Introduction (4) Windows Azure架构
查看>>
【转】chrome developer tool 调试技巧
查看>>
mahout运行测试与kmeans算法解析
查看>>
互相给一巴掌器
查看>>
Android SDK环境变量配置
查看>>
VM10虚拟机安装图解
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
JZOJ 4.1 B组 俄罗斯方块
查看>>
HDU6409 没有兄弟的舞会
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
HDU6205 card card card
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6198 number number number
查看>>
HDU6438 Buy and Resell
查看>>
HDU6446 Tree and Permutation
查看>>