
简介: log4cpp是个基于LGPL的开源项目,是基于优秀的日志处理跟踪项目Java语言的log4j移植过来的。log4j介绍的文档很多,在java领域使用的也比较广泛,而这个功能强大的库对国内的C++语言开发人员却使用的不多。这里从开发人员使用的角度介绍这个库,使开发人员用最少的代价尽快掌握这种技术。下面先简单介绍一下这个项目的优点(也是log4j的优点),然后分原理,手动使用步骤,配置文件驱动方式使用步骤,其他考虑等方面进行讨论。以下讨论基于log4cpp0.3.4b。
优点:
提供应用程序运行上下文,方便跟踪调试;
可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等;
可以动态控制日志记录级别,在效率和功能中进行调整;
所有配置可以通过配置文件进行动态调整;
多语言支持,包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等;
1. 原理
log4cpp有3个主要的组件:categories(类别)、appenders(附加目的地)、和 layouts(布局)。(为了方便大家理解,文中尽量使用英文原词)
layout类控制输出日志消息的显示样式(看起来像什么)。log4cpp当前提供以下layout格式:
log4cpp::BasicLayout // 以“时间戳 优先级(priority,下文介绍) // 类别(category,下文介绍) // NDC标签(nested diagnostic contexts 下文介绍): 日志信息”。 // 如:1056638652 INFO main : This is some info log4cpp::PatternLayout // 让用户根据类似于 C 语言 printf 函数的转换模式 //来指定输出格式。格式定义见代码附带文档。 log4cpp::SimpleLayout // 以“优先级(priority) - 日志信息”格式显示。
appender类用来输出日志(被layout格式化后的)到一些设备上。比如文件、syslog服务、某个socket等。可以定义自己的appender类输出日志信息到别的设备上,比如应用自身的日子处理进程、等。appender和layout的关系是layout附在appender上,appender类调用layout处理完日志消息后,记录到某个设备上。log4cpp当前提供以下appender:
log4cpp::IdsaAppender // 发送到IDS或者logger, 详细见 http://jade.cs.uct.ac.za/idsa/ log4cpp::FileAppender // 输出到文件 log4cpp::RollingFileAppender // 输出到回卷文件,即当文件到达某个大小后回卷 log4cpp::OstreamAppender // 输出到一个ostream类 log4cpp::RemoteSyslogAppender // 输出到远程syslog服务器 log4cpp::StringQueueAppender // 内存队列 log4cpp::SyslogAppender // 本地syslog log4cpp::Win32DebugAppender // 发送到缺省系统调试器 log4cpp::NTEventLogAppender // 发送到win 事件日志
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23406-1.html
坚决击沉
中国经济越来越强大
情深缘浅
打