log4cplus总结(借鉴网络)

1.log4cplus基本元素

Layouts   :控制输出信息的格式

Appenders :输出对象,是输出到控制台,还是输出到文件

Logger    :日志对象,所要输出的信息

Priorities :优先权,包括TRACE,DEBUG,INFO,WARNING,ERROR,FATAL

2.log4cplus基本结构

 log4cplus总结(借鉴网络)

3.使用步骤

l  生成Appender对象

l  生成Layout对象,并绑定到Appender。(可选)

l  生成Logger对象

l  设置Logger优先级。(可选)

l  将需要关联Logger的Appender添加到Logger上。

l  使用Logger输出信息,所有大于设定的优先级的信息,并在所有挂接在该Logger对象上的Appender上以相应的Layout设定的格式显示出来

 

log4cplus内容介绍

1.Logger对象

  Logger对象具有层次结构,按名称区分,如下代码:

       Logger test = Logger::getInstance(“test”);

       Logger subtest = Logger::getInstance(“test.subtest”);

对象subtest是test的子对象

2.Layout格式输出

l  SimpleLayout

是一种简单格式的布局器,在输出的原始信息之前加上LogLevel和一个”-”。

l  TTCCLayout

       其格式有时间,线程ID,Logger和NDC组成。

l  PatternLayout

       是一种有词法分析功能的模式布局器,类似正则表达式。以”%”作为开头

(1)"%%",转义为% 。

(2)"%c",输出logger名称,如test.subtest 。也可以控制logger名称的显示层次,比如"%c{1}"时输出"test",其中数字表示层次。
(3)"%D",显示本地时间,比如:"2004-10-1618:55:45",%d显示标准时间。     可以通过%d{...}定义更详细的显示格式,比如%d{%H:%M:%s}表示要显示小时:分钟:秒。大括号中可显示的

(4)"%F",输出当前记录器所在的文件名称,比如"main.cpp"
(5)"%L",输出当前记录器所在的文件行号,比如"51"
(6)"%l",输出当前记录器所在的文件名称和行号,比如"main.cpp:51"
(7)"%m",输出原始信息。
(8)"%n",换行符。

(9)"%p",输出LogLevel,比如"DEBUG"
(10)"%t",输出记录器所在的线程ID,比如 "1075298944"
(11)"%x",嵌套诊断上下文NDC (nesteddiagnostic context) 输出,从堆栈中弹出上下文信息,NDC可以用对不同源的log信息(同时地)交叉输出进行区分。
(12)格式对齐,比如"%-10m"时表示左对齐,宽度是10,当然其它的控制字符也可以相同的方式来使用,比如"%-12d","%-5p"等等。

3.Appender输出位置

l  控制台输出

ConsoleAppender

l  文件输出

       FileAppender/RollingFileAppender/DailyRollingFileAppender

l  FileAppender :

       实现了基本的文件操作功能,构造函数如下:

l  FileAppender(filename,mode,immediateFlush);

<filename >文件名

<mode> 文件类型,可选择的文件类型包括app,ate,binary,in,out,trunc。缺省是trunc,表示将先前文件删除。

<immediateFlush>缓冲刷新标志.

l  RollingFileAppender:

      RollingFileAppender(filename,maxFileSize,maxBackupIndex,immediateFlush)

filename       : 文件名

maxFileSize    : 文件的最大尺寸

maxBackupIndex : 最大记录文件数

immediateFlush : 缓冲刷新标志

l  DailyRollingFileAppender:

DailyRollingFileAppender(filename, schedule,immediateFlush, maxBackupIndex)

filename      : 文件名

schedule      : 存储频度

immediateFlush : 缓冲刷新标志

maxBackupIndex : 最大记录文件数

4.举例代码

l  输出到控制台

log4cplus总结(借鉴网络)

 l  输出到文件


log4cplus总结(借鉴网络)

5.把设置移动到配置文件中

log4cplus通过PropertyConfigurtor类实现了基于脚本配置的功能,通过脚本可以完成对logger、appender和layout的配置

 

配置步骤:

l  配置Appender名称

枚举:

         log4cplus.appender.AppenderName1= log4cplus::ConsoleAppender

         log4cplus.appender.AppenderName2= log4cplus::FileAppender

         log4cplus.appender.AppenderName3= log4cplus::RollingFileAppender

         log4cplus.appender.AppenderName4= log4cplus::DailyRollingFileAppender

         log4cplus.appender.AppenderName5= log4cplus::SocketAppender

l  配置Layout

可以选择不设置、TTCCLayout或PatternLayout

设置TTCCLayout如下所示:

         log4cplus.appender.AppenderName.layout= log4cplus::TTCCLayout

设置PatternLayout如下所示:

         log4cplus.appender.AppenderName.layout= log4cplus::PatternLayout

         log4cplus.appender.AppenderName.layout.ConversionPattern= %d [%t] <%-5p> - %m%n

l  配置Filter

可选择的Filter,LogLevelMatchFilter,LogLevelRangeFilter和StringMatchFilter

设置之后输出的内容会有所改变

l  配置Logger

对于RootLogger如下所示:

         log4cplus.rootLogger= [LogLevel],appenderName,appenderName,…..

对于non-root logger如下所示:

         log4cplus.logger.logger_name= [LogLevel|INHERITED],appenderName,…..

l  加载配置

PropertyConfigurator::doConfigure(“log4cplus.cfg”);

5.1.举例代码

l  对Appender对象进行配置,包括设置Appender名称,Layout和Filter及相关参数。

设置Appender名称及参数如下:

    log4cplus.appender.AppenderName=log4cplus::FileAppender

   log4cplus.appender.AppenderName.File=d:\testlog.log

    设置Layout及参数,如:

   log4cplus.appender.AppenderName.layout=log4cplus::PatternLayout
    log4cplus.appender.AppenderName.layout.ConversionPattern = %d [%t] %-5p - %m%n

    设置Filter及参数,如:

   log4cplus.appender.AppenderName.filters.1=log4cplus::spi::LogLevelRangeFilter
    log4cplus.appender.AppenderName.filters.1.LogLevelMin=DEBUG
    log4cplus.appender.AppenderName.filters.1.LogLevelMax=INFO
    log4cplus.appender.AppenderName.filters.1.AcceptOnMatch=true
    log4cplus.appender.AppenderName.filters.2=log4cplus::spi::DenyAllFilter

l  设置Logger对象

log4cplus.rootLogger= TRACE,AppenderName1,AppenderName2

将以上配置保存到文件,比如:d:\log4cplus.cfg中,则使用如下

log4cplus总结(借鉴网络)

你可能感兴趣的:(log)