- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Apachelog4cxx在C多进程多线程下的使用
Apache log4cxx在C++多进程多线程下的使用
1、Apache log4cxx介绍
Apache log4cxx是Apache Logging Services三个日志记录项目之一,完全开源组件。是著名的日志记录组件log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。当前的最新版本为0.10.0。
2、Apache log4cxx 框架组成
Apache Log4cxx有三个关键组件,它们是loggers, appenders和layouts。执行日志操作Logger是log4cxx的核心类looger有层次结构,最顶层为RootLogger;logger是级别debug、info、warn、error、fatal、all、off,最常用的应该是debug()和info();而warn()、error()、fatal()仅在相应事件发生后才使用。每个logger可以附加多个Appender。Appender代表了日志输出的目标,如输出到文件、控制台等等。对于每一种appender,都可以通过layout进行格式设置。
使用中用到的类有BasicConfiguratorPropertyConfigurator、DOMConfigurator等,用于对log4cxx进行配置。其中BasicConfigurator提供了一种简单配置,包括使用ConsoleAppder作为root appender和PatternLayout作为缺省布局
PropertyConfigurator使用properties文件作为配置方式
DOMConfigurator则使用properties文件作为配置方式
3、多进程多线程使用设计
Apache Log4cxx 提供的常用供日志调用方法,logger-info(),logger-debug(),logger-warn(),logger-error(),与上述方法类似的还有相应的宏调用LOG4CXX_DEBUG()、LOG4CXX_INFO()、LOG4CXX_WARN()、LOG4CXX_ERROR()。每个方法与宏的参数要求是全字符串类型,对于不同的日志信息相应调用不同的日志记录方法,即可得到不同级别、不同类型的日志信息。
配置文件的设置Apache Log4cxx提供
static void configure(helpers::Properties properties)函数,参数中传入配置文件的绝对路径或是相对路径、文件名, 日志文件名称 Apache Log4cxx提供
static LoggerPtr getLogger(const std::wstring name);
参数中传入日志文件名,用日志文件名称实例化LoggerPtr对象
LoggerPtr logger(Logger::getLogger(trace)),即可用通过logger对象调用相应类型日志方法,宏调用也在实例化日志对象后才能对设置信息有作用
大家看到了,方法参数要求是一个字符串类型,不便于C++记录日志,也不习惯于C++程序员使用。配置文件与日志文件名设备,都用到了静态方法,多线程共用一个日志对象,每个线程一个日志文件,上述静态方法是不能满足这个需求的,多个进程里面不用的线程调用此方法,每个线程一个日志文件,就更不能满足需求,所以我们必须自己设计一种结构来封装Apache Log4cxx提供的方法,满足多进程多线程下,一个线程一个日志文件的需求。设计一种方便的参数传入模式,使C++程序员能方便使用日志组件提供方法。
我的设计模型如下,用动态库封装日志方法,不同进程、不同线程实例化一个动态库对象,便能解决多进程,多线程生成不同文件问题,用类似sprintf()格式化参数,封装日志方法参数,当然也可以用特定格式来规定日志输出,便能解决方便操作问题,实例化封装类对象,为了不再引入Apache Log4cxx头文件信息,我提供两个额外的创建实例,销毁实例方法,这样一个完美的日志服务组件就做成了,下面我们来实现这个设想。
4、多进程多线程使用实现
4.1在microsoft Visual C++ 6.0 IDE 上新建一个Win32 Dynamic-Link Library 工程,命名为Trace,选择A simple Dll project,点击Finish一个简单的动态连接库工程就建好了。
4.2 在StdAfx.h文件中包函调用Apache Log4cxx的头文件
#include logger.h
#include PropertyConfigurator.h
using namespace std;
using namespace l
您可能关注的文档
- (一)电极安装QRS命名与测量.doc
- (东莞)安全生产百日整治行动实施方案.doc
- (中国)对外贸易理论与政策.docx
- (全)微生物综合实验201211.doc
- (定)北仑人民医院绿化摆放方案.doc
- (【通信工程类】外文文献)Wi-Fi,WiMaxandWCDMA(翻译后).doc
- (七年级)二元一次方程组及解不等式组.doc
- (表格式)新人教版二元一次方程组全章教案.doc
- (重要)现代家具企业的企业经营策略.doc
- (重庆理工大学)余成波-远程测控与信息处理.doc
- 林德115系列叉车维修手册 英文.pdf
- 林德E16C-03, E16P-03, E20P-03叉车维修手册 英文.pdf
- 林德H50T叉车维修手册 英文.pdf
- 6.1.2 化学反应与电能 课件高一下学期化学人教版(2019) 必修第二册.pptx
- 零碳项目初步设计(模板).docx
- 金融从业者必懂的宏观经济指标实战指南:2025年投资策略与市场分析.docx
- 第二章 第二节 氯及其化合物-第1课时 氯气的性质课件高一上学期化学人教版(2019)必修第一册.pptx
- 产品经理完全指南:Axure原型设计从入门到实战全解.docx
- 6.1.2 影响化学反应速率的因素 课件高一下学期化学苏教版(2020)必修第二册.pptx
- 零碳项目融资方案(模板).docx
文档评论(0)