Log4cpp 使用手册

参考资料: log4cpp 配置 使用http://www.cnblogs.com/welkinwalker/archive/2011/06/23/2088197.html

便利的开发工具-log4cpp快速使用指南

http://www.ibm.com/developerworks/cn/linux/l-log4cpp/

Log4cpp配置文件格式说明

http://sogo6.iteye.com/blog/1154315

使用步骤说明:

1、下载log4cppDLL ,见附件。这里面已经有别人编译完成的.lib与.dll文件。我们拿来用即可。

包含文件如下图所示:

clip_image002

2、打开我们的程序,选中项目,属性,如下图所示

clip_image004

3、选择“c/c++“选项,点开下列菜单,点击”常规“:在“附加包含目录”这一栏中,选择编辑,找到刚刚附件里面的文件夹下面的include菜单。

如下面所示:(我的log4cpp文件放在桌面上,如果想移植时,不改变此输入项,可将log4cpp放在D盘根目录下面即可。)完成之后,点击确定即可。

4、在左边的菜单中,点开“链接器“选项。并点开“常规“选项栏。在附加库目录中,选择log4cpp文件下面的动态库文件.dll。如下图所示:(弄完后,点击确定)

5、在“链接器“菜单下,选择“输入“,在”附加依赖项“中输入log4cppDLLD.lib,(注:通过.lib当中的文件,我们就可以找到DLL中函数的地址,从而引用DLL当中的函数),如下图所示:

6、以上步骤弄完以后,点击确定。然后在选中项目,右击,点击“在windows资源管理器中打开文件“,在此目录下,拷贝两个文件进去。

一个是 log4cppDLLD.dll,动态链接库文件。

一个是 log4cpp.conf, log4cpp的配置文件

此文件见附件。

7、一切准备工作完成之后,下面进入正式编程阶段。

1)在你需要添加日志的文件中,引入下面头文件

#include "log4cpp/Category.hh "
 
#include "log4cpp/FileAppender.hh"
 
#include "log4cpp/SimpleLayout.hh"
 
#include "log4cpp/PropertyConfigurator.hh"
 
#include <log4cpp/Portability.hh>

2)在主线程或者副线程中,引入下面日志文件的配置、实例化

// 1 读取解析配置文件
 
// 读取出错, 完全可以忽略,可以定义一个缺省策略或者使用系统缺省策略
 
// BasicLayout输出所有优先级日志到ConsoleAppender
 
try { 
 
log4cpp::PropertyConfigurator::configure("./log4cpp.conf");
 
} catch(log4cpp::ConfigureFailure& f) {
 
std::cout << "Configure Problem " << f.what() << std::endl;
 
return -1;
 
}
 
// 2 实例化category对象
 
// 这些对象即使配置文件没有定义也可以使用,不过其属性继承其父category
 
// 通常使用引用可能不太方便,可以使用指针,以后做指针使用
 
// log4cpp::Category* root = &log4cpp::Category::getRoot();
 
log4cpp::Category& root = log4cpp::Category::getRoot();
 
log4cpp::Category& sub1 = 
 
log4cpp::Category::getInstance(std::string("sub1"));
 
// 3 正常使用这些category对象进行日志处理。
 
// sub1 has appender A1 and rootappender.
 
int i = 1;
 
sub1.info("info: %d ok !",i); //这个和我们的配置文件相关
 

3)运行程序,此时会出现以下界面:

clip_image012

选中项目,右击,点击“在windows资源管理器中打开文件“,此时会发现,该目录下,出现了A1.log文件,打开文件出现下面的文字:

The message 'info: 1 ok !' at time 2014-09-02 19:56:55,686[2676]INFO

为什么会出现此信息???

4)打开log4cpp.conf文件,一切秘密皆在此。

我引用的是A1 category,而A1属性如下:

#定义A1的属性

log4j.appender.A1=org.apache.log4j.FileAppender

log4j.appender.A1.fileName=A1.log

appender.A1.layout=org.apache.log4j.PatternLayout

appender.A1.layout.ConversionPattern=The message '%m' at time %d[%t]%p%n

第一行大概意思:输出文件Appender

第二行大概意思:输出文件名字定义为A1.log

第三行大概意思:文件的布局layout方式是PatternLayout模式。模式不同,输出的内容亦有所不同。

第四行大概意思:输出内容。

下面对The message '%m' at time %d[%t]%p%n 这句话做详细说明。

此为输出文件的格式说明符。

其中 %m表示 用户写log的具体信息,也就是我们所要存的内容。

%d 表示 时间戳,精确到ms

%t 表示 线程名

%p 表示 优先级

%n 表示 回车换行符

That is all,thanks。

转载于:https://www.cnblogs.com/zhuxuekui/p/3952196.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适合初学编程的一些项目

学习了一门语言以及数据结构之后&#xff0c;通常需要做一些项目来巩固所学的知识&#xff0c;我感觉最好是用写一些简单的小工具或者小游戏&#xff0c;能够提高自己的编程能力&#xff0c;也能进一步提高自己学习的兴趣。最好的是将自己想做的事情用程序的实现&#xff0c;比…

python 5的倍数_查找所有低于1000的数字的和,这是Python中3或5的倍数

python 5的倍数Sometimes, we need to find the sum of all integers or numbers that are completely divisible by 3 and 5 up to thousands, since thousands are a too large number that’s why it becomes difficult for us. So, here we will do it in Python programmi…

switch 的性能提升了 3 倍,我只用了这一招!

这是我的第 190 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;上一篇《if快还是switch快&#xff1f;解密switch背后的秘密》我们测试了 if 和 switch 的性能&am…

HashMap get不出对象时出错 解决

为什么80%的码农都做不了架构师&#xff1f;>>> 如题&#xff1a; Map map new HashMap(); map.put("1", "A"); map.put("2", "A"); map.put("3", "A"); map.put("4", "A")…

安装codeblocks和wxwidgets及opencv

codeblocks 是一款开放源代码的跨平台的c/c++集成开发环境,它是用wxwidgets 开发的,并且支持插件,功能很强大。可以用来在windows开发各种程序。下面记录一下我安装该软件的过程: 首先到http://www.codeblocks.org/downloads 下载该软件,选择含mingw的文件(codeblocks-10…

Java LinkedList boolean addAll(int index,Collection c)方法,带有示例

LinkedList boolean addAll(int index&#xff0c;Collection c)方法 (LinkedList boolean addAll(int index, Collection c) method) This method is available in package java.util.Collection and here, Collection is an interface. 该方法在java.util.Collection包中可用…

高质量SQL的30条建议!(后端必备)

这是我的第 191 期分享作者 | 捡田螺的小男孩来源 | 捡田螺的小男孩&#xff08;ID&#xff1a;gh_873ad5979a0b&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;本文将结合实例demo&#xff0c;阐述30条有关于优化SQL的建议&#xff0c;多数…

滤波电容的选择(调试中)

整个系统高电平时12V&#xff0c;信号是ms级的负脉冲&#xff0c;脉冲的下降沿很陡&#xff0c;当用示波器展开看的时候&#xff0c;发现了低于0V的过冲&#xff0c;能低到-6V&#xff08;相当严重&#xff09;&#xff0c;这是在整个箱子的出口处测量到的。在主控板&#xff0…

sicp

sicp (structure and interpretion of computer programs &#xff0c;编号为6.001 )是麻省理工学院的一门经典计算机入门课程&#xff0c;虽然近年被另外一门课程所取代&#xff08;6.00 或6.01 &#xff09;&#xff0c;但最近好像有复活 的迹象。Perter Norvig 写了关于sicp…

Redis的自白:我为什么在单线程的这条路上越走越远?

这是我的第 192 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;我是 Redis&#xff0c;今年 11 岁了~曾几何时我是辣么的单纯&#xff0c;辣么的可爱&#xff0c;而如…

两个矩阵相乘的乘法次数_C ++程序将两个数字相乘而不使用乘法运算符

两个矩阵相乘的乘法次数The problem is we have two integer numbers and find the multiplication of them without using the multiplication operator. This problem can be solved using the Russian peasant algorithm. Assume the two given numbers are m and n. Initia…

关于引用

2019独角兽企业重金招聘Python工程师标准>>> 1、 <!-- lang: html --> <!DOCTYPE HTML> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta charset"utf-8" /> <!--…

ruby array_在Ruby中使用Array.delete()和Array.delete_at()从Array中移除元素

ruby arrayRuby Array.delete()和Array.delete_at()方法 (Ruby Array.delete() and Array.delete_at() methods) In the last article, we have seen how we can remove the elements from an instance of Array class with the help of Array.pop() and Array.shift()? 在上一…

一口气说出 6 种延时队列的实现方法,面试官满意的笑了

这是我的第 193 期分享作者 | 程序员内点事来源 | 程序员内点事&#xff08;ID&#xff1a;chegnxy-nds&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;五一期间原计划是写两篇文章&#xff0c;看一本技术类书籍&#xff0c;结果这五天由于自…

一些c语言图形库

想编程绘制一些简单的图形&#xff0c;有不少的图形库可以选择&#xff1a; &#xff08;1&#xff09;BGI图形库&#xff1a;即turbo c所带的图形库。misaki 在vc&#xff08;vc6,vc2008,vc2010等)下重写了该库&#xff0c;名为EGE 。另一个类似的vc(vc6,vc2008,vc2010)下的库…

acl 服务器编程框架特点介绍

2019独角兽企业重金招聘Python工程师标准>>> acl 中服务器框架模块是一个非常重要的模块&#xff0c;使用该模块技术人员可以快速地写出稳定、安全、高效的网络服务应用&#xff0c;该模块主要来源于著名的邮件服务器程序 (Postfix) 中的 master 模块&#xff0c;为…

turbo c相关文档

无意中在网上找到的turbo c 2.0相关文档&#xff0c;有reference guide 和user guide.下载地址见&#xff08;镜像一 &#xff0c;镜像二 &#xff0c;镜像三 &#xff0c;镜像四 &#xff09;。这些网站还有很多其他各类软件相关文档&#xff0c;感兴趣的可以自己看看。另外&a…

一个类可以有一个接口,接口可以有一个Java类吗?

In the very first step, we will see can a class have an interface in Java? 在第一步中&#xff0c;我们将看到类可以在Java中具有接口吗&#xff1f; Yes, it is possible to define an interface inside the class. 是的&#xff0c;可以在类内部定义接口。 The interf…

人人都能看懂的 6 种限流实现方案!(纯干货)

这是我的第 195 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;为了上班方便&#xff0c;去年我把自己在北郊的房子租出去了&#xff0c;搬到了南郊&#xff0c;这样…

測试新浪微博@小冰 为代码机器人的一些方法

微软的微信小冰被腾讯封杀之后,如今移民到了新浪微博; 小冰 这里贴一些眼下有效的用来识别是这是"机器"而不是有正常人类智商的代码的方法: 1. 在正常的文字中夹杂其他符号,确保不存在有意义的连续的词汇,人眼能够分辨,机器不知所云而会露馅: 比方: ^^^小v冰^^^-…