log4cpp 学习过程(二) ----整体架构

 

 VS2003打开整个源码工程,仔细读代码,方式为结合文档来读;

首先打开log4cpp-docs-1.0/api/index.htmlFile List 标签下浏览整个头文件信息,然后浏览整个头文件的依赖关系

一:经过梳理:

第一层为Export.hh是整个工程都要包含的头文件,仔细阅读,发现就是一个跨平台的导出方式的宏定义;这样在程序中只需要用LOG4CPP_EXPORT这个类型就可以,其他的跨平台操作动作都由Export.hh来自动完成;

    第二层为Portability.hh,包含可移植代码,它包含config.hExport.hhstrstream,比如说,如果没有定义这个宏LOG4CPP_HAVE_SSTREAM,那么后面的很多文件都用不了功能强大的ostringstream类,在这里给个它的实现方法;以备默认使用;
    二:类的层次结构:
    内部的所有以下划线_开头的函数和变量都代表是成员函数或者成员变量。
log4cpp3个主要的组件:categories(类别)、appenders(附加目的地)、和 layouts(布局)。
    category类主要由内部友元类HierarchyMaintainer来管理和维护,它主要是实现对所有的appenders,以及日志记录级别Priority的管理和操作。
    Appender类代表日志写到的地方,可以是std::cout,即标准显示器输出;也可以是文件;还可以是系统日志,它内部主要是通过std::map来实现对所有目的地对象的管理和操作,appender的名字作为keyappender对象的指针作为值。
    PatternLayout类代表布局,即以什么样子的格式写到目的地;它的内部有十来个组件,可以把不同的日志项,输出到不同的目的地;由一个std::vector来对它们的对象指针进行管理,通过setConversionPattern来设置具体格式,举例如下:
LayoutPatternLayout的一个对象,则可以像下面这样设置格式
layout->setConversionPattern("%% %r %c:%d (%R / %r) [%p] %x %m %% (%u) %n");

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值