zoukankan      html  css  js  c++  java
  • 使用Log4Cplus+配置文件打印日志

    开发环境:win7+VS2015 msvc14

    版本:log4CPlus1.2.1

    API参考:https://log4cplus.sourceforge.io/docs/html/index.html

    前两天工作中使用到了Log4Cplus来记录程序日志,下面总结下通过配置文件来使用Log4Cplus库。

    基本要求:日志文件按天命名,每天生成一个文件。

    配置文件:

    log4cplus.rootLogger=ALL, LegendPrint_Run_LOG

    //指定append类型,因为我们这需要按天来生成,同时文件名也要可以按时间来命名

    //所以选择TimeBasedRollingFileAppender

    log4cplus.appender.LegendPrint_Run_LOG = log4cplus::TimeBasedRollingFileAppender

    //指定文件路径名,可以是绝对路径也可以是相对路径,可以使用时间匹配符来动态定义文件名。log4Cplus会根据你使用到的时间自动创建文件。比如,你的文件名是由年月构成,那每个月都会生成新的文件。

    log4cplus.appender.LegendPrint_Run_LOG.FilenamePattern= log %d{yyyy-MM-dd}.log

    //设置为true表示向日志文件中追加信息而不是截断。

    log4cplus.appender.LegendPrint_Run_LOG.Append = true

    //设置最大的文件数,超过这个数值删除时间最久的文件。

    log4cplus.appender.LegendPrint_Run_LOG.MaxHistory = 999

    //当设置为true表示每一次有append event事件,输出流就会被刷新到文件中。

    log4cplus.appender.LegendPrint_Run_LOG.ImmediateFlush = true

    //默认值为true关闭的时候回滚到一个新的文件中,有bug,我们设置为false,不使用这个功能。

    log4cplus.appender.LegendPrint_Run_LOG.RollOnClose = false

    //如果为true,那么如果指定的日志路径名中如果有文件夹不存在,则会创建文件夹。

    log4cplus.appender.LegendPrint_Run_LOG.CreateDirs = true

    //指定消息输出的格式

    log4cplus.appender.LegendPrint_Run_LOG.layout = log4cplus::PatternLayout

    log4cplus.appender.LegendPrint_Run_LOG.layout.ConversionPattern =  %D{%Y-%m-%d %H:%M:%S,%q}: %-5p %m%n

    //指定消息输出的级别,这边使用的是Range,指定范围,在这个范围内都可以使用。

    log4cplus.appender.LegendPrint_Run_LOG.filters.1 = log4cplus::spi::LogLevelRangeFilter

    log4cplus.appender.LegendPrint_Run_LOG.filters.1.LogLevelMin = TRACE

    log4cplus.appender.LegendPrint_Run_LOG.filters.1.LogLevelMax = FATAL

    //这里我们还可以使用LogLevelMatchFilter来指定消息输出级别

    //log4cplus.appender.LegendPrint_Error_LOG.filters.1=log4cplus::spi::LogLevelMatchFilter

    //log4cplus.appender.LegendPrint_Error_LOG.filters.1.LogLevelToMatch=ERROR

    //true表示如果匹配了filter指定的范围则输出,如果是false则反之。

    log4cplus.appender.LegendPrint_Run_LOG.filters.1.AcceptOnMatch = true

    //表示清空过滤器的设置,这边设置的顺序和执行的顺序是相反的,即log4Cplus会先清空//然后再设置filter的级别。

    log4cplus.appender.LegendPrint_Run_LOG.filters.2 = log4cplus::spi::DenyAllFilter

    使用时:

    log4cplus::PropertyConfigurator::doConfigure(“配置文件.properties”);

    logger = log4cplus::Logger::getRoot();//指定使用root

    再看一个用例:

    #配置文件(其它日志级别配置相同):

    log4cplus.logger.console=TRACE,logConsole

    log4cplus.logger.root=TRACE,ERROR_MSGS, DEBUG_MSGS, INFO_MSGS

    <br>#不向默认对象(rootLogger)输出,因此信息只能输出到文件

    log4cplus.additivity.file=false

     

    ###############################CONSOLE##########################################

    log4cplus.appender.logConsole=log4cplus::ConsoleAppender

    log4cplus.appender.logConsole.Encoding=utf-8

    log4cplus.appender.logConsole.layout=log4cplus::PatternLayout

    log4cplus.appender.logConsole.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n

     

    ################################DEBUG####################################

    #设置日志追加到文件尾

    log4cplus.appender.DEBUG_MSGS=log4cplus::TimeBasedRollingFileAppender

    log4cplus.appender.DEBUG_MSGS.FilenamePattern=debug.%d{yyyyMMdd}.log

    log4cplus.appender.ERROR_MSGS.Schedule=DAILY

    log4cplus.appender.ERROR_MSGS.MaxHistory=365

     

    log4cplus.appender.DEBUG_MSGS.Append=true

    log4cplus.appender.DEBUG_MSGS.RollOnClose=false

    log4cplus.appender.DEBUG_MSGS.CreateDirs=true

     

    #设置日志文件大小

    log4cplus.appender.DEBUG_MSGS.MaxFileSize=10MB

     

    #设置生成日志最大个数

    log4cplus.appender.DEBUG_MSGS.MaxBackupIndex=5

    log4cplus.appender.DEBUG_MSGS.Encoding=utf-8

    log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout

     

    #设置日志打印格式

    log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n

     

    #匹配相同日志级别,只有wx_uservedio日志才输入到该文件中

    log4cplus.appender.DEBUG_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter

    log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG

    log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true

    log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter

     

    ################################ERROR####################################

    #设置日志追加到文件尾

    log4cplus.appender.ERROR_MSGS=log4cplus::TimeBasedRollingFileAppender

    log4cplus.appender.ERROR_MSGS.FilenamePattern=error.%d{yyyyMMdd}.log

    log4cplus.appender.ERROR_MSGS.Schedule=DAILY

    log4cplus.appender.ERROR_MSGS.MaxHistory=365

     

    log4cplus.appender.ERROR_MSGS.Append=true

    log4cplus.appender.ERROR_MSGS.RollOnClose=false

    log4cplus.appender.ERROR_MSGS.CreateDirs=true

     

    #设置日志文件大小

    log4cplus.appender.ERROR_MSGS.MaxFileSize=10MB

     

    #设置生成日志最大个数

    log4cplus.appender.ERROR_MSGS.MaxBackupIndex=5

    log4cplus.appender.ERROR_MSGS.Encoding=utf-8

    log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout

     

    #设置日志打印格式

    log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m%n

     

    #匹配相同日志级别,只有wx_uservedio日志才输入到该文件中

    log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter

    log4cplus.appender.ERROR_MSGS.filters.1.LogLevelToMatch=ERROR

    log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true

    log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter

     

    ################################INFO####################################

    #设置日志追加到文件尾

    log4cplus.appender.INFO_MSGS=log4cplus::TimeBasedRollingFileAppender

    log4cplus.appender.INFO_MSGS.FilenamePattern=info.%d{yyyyMMdd}.log

    log4cplus.appender.INFO_MSGS.Schedule=DAILY

    log4cplus.appender.INFO_MSGS.MaxHistory=365

     

    log4cplus.appender.INFO_MSGS.Append=true

    log4cplus.appender.INFO_MSGS.RollOnClose=false

    log4cplus.appender.INFO_MSGS.CreateDirs=true

     

    #设置日志文件大小

    log4cplus.appender.INFO_MSGS.MaxFileSize=10MB

     

    #设置生成日志最大个数

    log4cplus.appender.INFO_MSGS.MaxBackupIndex=5

    log4cplus.appender.INFO_MSGS.Encoding=utf-8

    log4cplus.appender.INFO_MSGS.layout=log4cplus::PatternLayout

     

    #设置日志打印格式

    log4cplus.appender.INFO_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n   

     

    #匹配相同日志级别,只有INFO日志才输入到该文件中

    log4cplus.appender.INFO_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter

    log4cplus.appender.INFO_MSGS.filters.1.LogLevelToMatch=INFO

    log4cplus.appender.INFO_MSGS.filters.1.AcceptOnMatch=true

    log4cplus.appender.INFO_MSGS.filters.2=log4cplus::spi::DenyAllFilter

     

    使用时:

    Logger LogConsole = Logger::getInstance(LOG4CPLUS_TEXT("console"));

    Logger LogRoot = Logger::getInstance(LOG4CPLUS_TEXT("root"));

    打印日志时使用 LOG4CPLUS_TRACEDEBUGINFOWARN等宏函数打印日志。

    std::stringstream  _ss;

    LOG4CPLUS_TRACE(LogConsole , _ss.str().c_str());

  • 相关阅读:
    GIS单词汇总
    ArcGIS Server 开发初步 自定义工具
    ArcGIS Server 9.2 实现基于web浏览器的在线编辑
    控制图层是否显示的方法
    地图缓存与瓦片切割步骤
    汉字转拼音缩写(VB版)
    VB的Winsock控件GetData方法获取汉字乱码解决方法
    柱状专题图实现例子
    汉字转拼音缩写(C#版)
    ArcGIS Server .NET ADF中的AJAX之深入浅出/CallbackResult详解
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/11792855.html
Copyright © 2011-2022 走看看