快速使用Log4Cpp
封了一下接口,快速使用。
其他的你都不用管了。
这里封装了需要读取外部conf文件配置输出项。否则可以用getInstance初始化日志类
#include "L4Cpp.h" void CTestAgainDlg::OnBnClickedButton1()
{
L4Cpp::get()->warn("eeeeeeeee");
}
下面展示了封装以及引用结构
#pragma once
#include "L4Cpp/Category.hh" class L4Cpp
{
private:
L4Cpp(){};
static log4cpp::Category* root; public:
//获得日志仓库
static log4cpp::Category* get();
static void defaultFileInstance();
static void defaultSteamInstance();
};
L4Cpp.h
//LogFacade.cpp如下: #include "StdAfx.h"
#include "L4Cpp.h" #include "L4Cpp/Appender.hh"
#include "L4Cpp/FileAppender.hh"
#include "L4Cpp/OstreamAppender.hh"
#include "L4Cpp/NTEventLogAppender.hh"
#include "L4Cpp/StringQueueAppender.hh"
#include "L4Cpp/RollingFileAppender.hh"
//#include "L4Cpp/SyslogAppender.hh"
#include "L4Cpp/Layout.hh"
#include "L4Cpp/BasicLayout.hh"
#include "L4Cpp/SimpleLayout.hh"
#include "L4Cpp/PatternLayout.hh"
#include "L4Cpp/BasicConfigurator.hh"
#include "L4Cpp/PropertyConfigurator.hh"
#include "L4Cpp/Priority.hh"
#include "L4Cpp/NDC.hh" #include <string.h> #pragma comment(lib,"log4cpp.lib") log4cpp::Category* L4Cpp::root = NULL; log4cpp::Category* L4Cpp::get()
{
if (!root)
{
//debug模式下,配置没找到会跳出runtime 异常,貌似捕获不了。考虑把那里注掉或换成logic_error
try {
log4cpp::PropertyConfigurator::configure("./log4cpp1.conf");
root = &log4cpp::Category::getRoot();
} catch(std::runtime_error e) {
//读不到配置文件不操作
//但外部调用并不会出错
}
}
return root;
} //加载默认配置,输出到同级目录中的logging.log文件
void L4Cpp::defaultFileInstance(){
if (!root)
{
log4cpp::Layout* layout = new log4cpp::BasicLayout(); // 1实例化一个layout 对象
log4cpp::Appender* appender = new log4cpp::FileAppender("FileAppender", "./hgsoft.log"); // 2. 初始化一个appender 对象
appender->setLayout(layout); // 3. 把layout对象附着在appender对象上
root = &log4cpp::Category::getRoot();// 4. 实例化一个category对象
root->setAdditivity(false); // 5. 设置additivity为false,替换已有的appender
root->setAppender(appender); // 5. 把appender对象附到category上
root->setPriority(log4cpp::Priority::DEBUG); // 6. 设置category的优先级,低于此优先级的日志不被记录
}
} void L4Cpp::defaultSteamInstance(){
if (!root)
{
log4cpp::Layout* layout = new log4cpp::BasicLayout(); // 1实例化一个layout 对象
log4cpp::Appender* appender = new log4cpp::OstreamAppender("ostream",&std::cout); // 2. 初始化一个appender 对象
appender->setLayout(layout); // 3. 把layout对象附着在appender对象上
root = &log4cpp::Category::getRoot();// 4. 实例化一个category对象
root->setAdditivity(false); // 5. 设置additivity为false,替换已有的appender
root->setAppender(appender); // 5. 把appender对象附到category上
root->setPriority(log4cpp::Priority::DEBUG); // 6. 设置category的优先级,低于此优先级的日志不被记录
}
}
L4Cpp.cpp
文件引用架构

还需要改动的地方是原本
#include <log4cpp/****.hh>
需要转换成 引用本地的头文件
#include "L4Cpp/****.hh"
库文件在L4Cpp.cpp中通过#pragma comment(lib,"log4cpp.lib") 引用了
拓展阅读:
http://www.ibm.com/developerworks/cn/linux/l-log4cpp/
http://log4cpp.sourceforge.net/
快速使用Log4Cpp的更多相关文章
- Log4cpp配置文件格式说明
Log4cpp配置文件格式说明 博客分类: log4cpp log4cpp log4cpp有3个主要的组件:categories(类别).appenders(附加目的地).和 layouts(布局) ...
- Log4cpp介绍及使用
Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能.使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流.内存字符串队列.文件.回滚文件.调试器.Wind ...
- CMake快速入门教程:实战
转自http://blog.csdn.net/ljt20061908/article/details/11736713 0. 前言 一个多月前,由于工程项目的需要,匆匆的学习了一下cmake的使 ...
- 【转】 log4cpp 的使用
[转自] http://sogo6.iteye.com/blog/1154315 Log4cpp配置文件格式说明 log4cpp有3个主要的组件:categories(类别).append ...
- CMake快速入门教程-实战
http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...
- Log4Cpp的使用(转)
本文介绍如何使用Log4CPP. Log4Cpp介绍 Log4Cpp的Api接口可以在http://log4cpp.sourceforge.net/api/index.html中查询得到. Log4C ...
- 转:CMake快速入门教程-实战
CMake快速入门教程:实战 收藏人:londonKu 2012-05-07 | 阅:10128 转:34 | 来源 | 分享 0. 前言一个多月 ...
- [转]CMake快速入门教程:实战
转自http://blog.csdn.net/ljt20061908/article/details/11736713 0. 前言 一个多月前,由于工程项目的需要,匆匆的学习了一下cmake的使 ...
- Log4cpp 使用手册
参考资料: log4cpp 配置 与 使用http://www.cnblogs.com/welkinwalker/archive/2011/06/23/2088197.html 便利的开发工具-log ...
随机推荐
- SQL Server 2000的安全配置
SQL Server 2000的安全配置 数据库是电子商务.金融连同ERP系统的基础,通常都保存着重要的商业伙伴和客户信息.大多数企业.组织连同政府 部门的电子数据都保存在各种数据库中,他们用这些数据 ...
- nginx redis tomcat 分布式web应用 session共享
目标:多台tomcat 使用redis实现共享session.redis的安装请参阅:centos上安装redis nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.w ...
- HDInsight-Hadoop实战(一)站点日志分析
HDInsight-Hadoop实战(一)站点日志分析 简单介绍 在此演示样例中.你将使用分析站点日志文件的 HDInsight 查询来深入了解客户使用站点的方式.借助此分析.你可查看外部站点一天内对 ...
- sql 生成excel
1创建存储过程 create PROCEDURE [dbo].[UP_Export_Data_To_CSV] @Table NVARCHAR(), @Path NVARCHAR(), @Subfix ...
- Android-ViewPagerIndicator
https://github.com/JakeWharton/Android-ViewPagerIndicator
- MVC架构杂谈
来源:伯乐在线专栏作者 - 林欣达 链接:http://ios.jobbole.com/86895/ 点击 → 了解如何加入专栏作者 前言 MVC是软件工程中的一种软件架构模式,它把软件系统分为三个基 ...
- iOS项目进行测试的配置
一.首先,注册苹果开发者账号并登陆https://developer.apple.com/account/#/overview/ZFBE9NJZM6, 二.创建测试证书
- [转]Form Builder:app_field.clear_dependent_fields和APP_FIELD.set_dependent_field的用法
转自:http://www.cnblogs.com/toowang/p/3668070.html 可以调用APP_FIELD.clear_dependent_fields和APP_FIELD.set_ ...
- Windows redis集群搭建
一.Windows下Redis安装 下载地址https://github.com/dmajkic/redis/downloads,下载到的Redis支持32bit和64bit.根据自己实际情况选择,本 ...
- (转)我所理解的OOP——UML六种关系
原文地址:http://www.cnblogs.com/dolphinX/p/3296681.html 最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱 ...