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,一经查实,立即删除!

相关文章

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")…

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

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

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

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

关于引用

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

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

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

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

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

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

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

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

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

秒建一个后台管理系统?用这5个开源免费的Java项目就够了

这是我的第 196 期分享作者 | Guide来源 | JavaGuide&#xff08;ID&#xff1a;JavaGuide&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;大家好&#xff0c;我是 Guide 哥&#xff0c;一个三观比主角还正的技术人。今天推荐几个 Java 项目…

读《白帽子讲Web安全》之客户端脚本安全(一)

2019独角兽企业重金招聘Python工程师标准>>> 【第2章 浏览器安全】 1、同源策略&#xff08;Same Origin Policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能。 浏览器的同源策略&#xff0c;限制了来自不同源的“document”或脚本&…

RocketMQ一行代码造成消息发送失败

这是我的第 198 期分享作者 | 丁威来源 | 中间件兴趣圈&#xff08;ID&#xff1a;dingwpmz_zjj&#xff09;分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;1、问题现象首先接到项目反馈使用 RocketMQ 会出现如下错误&#xff1a;错误信息关键点&#xf…

Java 中的 String 有没有长度限制?

这是我的第 199 期分享作者 | Hollis来源 | Hollis&#xff08;ID&#xff1a;hollischuang&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;关于String有没有长度限制的问题&#xff0c;我之前单独写过一篇文章分析过&#xff0c;最近我又抽…

开源 免费 java CMS - FreeCMS2.1 菜单管理

2019独角兽企业重金招聘Python工程师标准>>> 项目地址&#xff1a;http://www.freeteam.cn/ 菜单管理 FreeCMS在设计时定位于面向二次开发友好&#xff0c;所以FreeCMS提供了菜单管理功能&#xff0c;二次开发人员可以自由增加新的功能菜单到FreeCMS。 为了让后台…

本来想用“{{”秀一波,结果却导致了内存溢出!

这是我的第 200 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;生活中的尴尬无处不在&#xff0c;有时候你只是想简单的装一把&#xff0c;但某些“老同志”总是在不…

局部变量竟然比全局变量快 5 倍?

这是我的第 201 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;喽&#xff0c;大家好&#xff0c;磊哥的性能优化篇又来了&#xff01;其实写这个性能优化类的文章初…

FreeMarker笔记 前言第1章 入门

简介 简介 FreeMarker是一款模板引擎&#xff1a;一种基于模板的、用来生成输出文本&#xff08;任何来自于HTML格式的文本用来自动生成源代码&#xff09;的通用工具。它是为Java程序员提供的一个开发包或者说是类库。它不是面向最终用户&#xff0c;而是为程序员提供的可以嵌…

厉害了,3万字的MySQL精华总结 + 面试100问!

这是我的第 202 期分享作者 | 派大新来源 | JavaKeeper&#xff08;ID&#xff1a;JavaKeeper&#xff09;分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;❝写在之前&#xff1a;不建议那种上来就是各种面试题罗列&#xff0c;然后背书式的去记忆&#x…

网页视频播放器代码大全 + 21个为您的站点和博客提供的免费视频播放器

推荐 使用 极酷 Web在线播放器。网页中嵌入视频代码综合全然版 1.avi格式 代码片断例如以下&#xff1a;  程序代码 <objectid"video"width"400"height"200"border"0"classid"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA&q…

漫话:为什么计算机起始时间是1970年1月1日?

这是我的第 203 期分享作者 | 漫画编程来源 | 漫画编程&#xff08;ID&#xff1a;mhcoding&#xff09;分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;问题复现1970-01-01对于开发者来说都是不陌生的&#xff0c;有些系统对于时间的处理如果不够好的话&…