我们在写程序的时候通常会希望将一些信息记录下来,方便我们进行日后的一些信息跟踪,错误排查等等。比如:我们在进行数据库操作的时候,我们通常希望知道现在是程序的哪一部分进行了数据库的操作,所以我们会记录下threadid + sql这样的日志。但是通常我们都不情愿自己进行log的封装,这个时候我们就会想到使用第三方的库,今天我们就说一下c++中的第三方库----log4cpp,写过java程序的同学们都长都会使用log4j这样一个日志系统,其实log4cpp可以说是log4j对c++的一个扩展。

  下面我们就学习一下log4cpp,首先说一下log4cpp的几个大的组件,layouts,appenders,categories三大组件,大致的过程是这样的,layouts负责进行日志输出格式的限制,appenders负责进行数据输出位置的限制,categories负责进行真正的日志处理,至于他们的详细功能我们稍后会逐一详细叙述。

  1.   layouts: 负责进行输出日志格式的限制,其中包含四个主要的类: Layout,BasicLayout,PatternLayout,SimpleLayout四个类,这四个类的UML图如下:Layout是一个顶层的抽象类,其他类都继承子这个类。
    • SimpleLayout: 以“优先级(priority) - 日志信息”格式显示,由于显示的信息过于简单,所以通常都不愿意使用这个模式。 
    • BasicLayout: 以“时间戳+优先级+categoriesName+“:”+Info来表示日志的相关信息。
    • PatternLayout:可以使用类似于c语言的模式进行相关的参数设置,具体如下:
      • %c: 指的是categories的name
      • %d:指的是时间,但是可以具体制定时间的格式,制定的模式例如这样: %d{%H:%M:%S,%l}
      • %m: 指的是日志的消息
      • %n: 指的是换行符,会根据平台的不同,使用不同的格式,对用户透明
      • %p: 优先级等等
      • 具体情况可以参见log4cpp
      • 设置的函数是Layout.setConversionPattern()

  2.  Appender: 我们设置的layout只是相当于设置了日志的模式,但是我们要将使用制定模式的日志打印到什么地方,那就需要用到Appender,下面我们简单的介绍一下Appender的几种类型:

      • FileAppender: 用于将日志输出到文件中      

最新文章

  1. RabbitMQ Config
  2. js-FCC算法Smallest Common Multiple。找出两个参数和它们之间的连续数字的最小公倍数。
  3. Delphi 发展历史
  4. android 对一个合并后的联系人选择编辑,手机屏幕会缓慢变暗后再进入编辑界面的问题
  5. 关闭“编辑窗体”后, 主窗体的DatagridView刷新数据的问题
  6. fddd
  7. windows下安装mysql5.6.13的主从复制
  8. SE 2014年4月17日
  9. JavaScript null 和 undefined
  10. mysql5.6源码自动安装脚本
  11. MySQL日志文件之错误日志和慢查询日志详解
  12. Django REST FrameWork中文教程3:基于类的视图
  13. HDU 2089 不要62【解题报告】
  14. 使用MyEclipse新建maven项目时报An internal error occurred during: "Retrieving archetypes:". GC overhead limit
  15. hadoop MapReduce
  16. 论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)
  17. aop execution 表达式解析
  18. “教你如何玩转Web响应式布局” 的更多相关文章
  19. UNITY2018 真机开启deepprofiling的操作
  20. Object-c @property与@synthesize的配对使用。

热门文章

  1. EntityFramework 学习 一 Eager Loading
  2. 算法(Algorithms)第4版 练习 1.5.12
  3. CSS3特殊图形制作
  4. 创建表空间的sql语句
  5. 原生js图片懒加载特效
  6. C++中函数模版和普通函数的区别
  7. linux命令学习笔记(19):find 命令概览
  8. css基础知识一
  9. canvas变换(移动,缩放等)
  10. lvs-nat搭建httpd