C++开源库(一) ----log4cpp详解

  我们在写程序的时候通常会希望将一些信息记录下来,方便我们进行日后的一些信息跟踪,错误排查等等。比如:我们在进行数据库操作的时候,我们通常希望知道现在是程序的哪一部分进行了数据库的操作,所以我们会记录下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: 用于将日志输出到文件中      

 

posted @ 2016-12-11 20:46  奋斗中的屌丝  阅读(6732)  评论(2编辑  收藏  举报