zoukankan      html  css  js  c++  java
  • log4cplus TimeBasedRollingFileAppender

    参考自:http://blog.csdn.net/u010607621/article/details/54944696

    对于TimeBasedRollingFileAppender 这个日志appender 的功能总结

    使用配置文件
    示例(部分):
      log4cplus.logger.loggerMkt=ALL, RRM

      log4cplus.appender.RRM.File = file.log
      log4cplus.appender.RRM.FilenamePattern = log/%{yyyy-MM-dd_HHmm}/SQFront.mkt.log
      log4cplus.appender.RRM.CreateDires = true
      log4cplus.appender.RRM.MaxHistory = 9999
      log4cplus.appender.RRM.CleanHistoryOnStart = false

    若使用TimeBasedRollingFileAppender 作为appender 的实例则必须要配置FilenamePattern 的值,不能为空。程序对该值有判断,若为空则直接报错。
    FilenamePattern 配置的作用:
      1、指定转存日志文件的时间周期:
        %d{yyyy-MM-dd} 指定转存周期为一天
        %d{yyyy-MM} 指定转存周期为一月
        %d{yyyy-MM-dd_HHmm} 指定转存周期为一分钟
      2、指定转存日志文件的文件名,在上面的示例中则为SQFront.mkt.log
        不过这里要提醒一下,因为配置中指定了目录,这些目录如果不存在则必须要指定CreateDirs 为true, 否则将无法创建日志文件。
      3、另外,如果转存文件前,存在该文件,则原来的文件将会被替换。程序没有将原来存在的文件进行备份,这是一个不小的雷,你可以对源代码简单修改优化一下。
    File 配置的作用:
      仅仅是在程序运行过程中临时存储最新的日志内容,同时是以追加的方式打开该日志文件进行新日志的打印,当转存时间到来则会将该日志文件中的日志转存到指定文件中。
      若该值未配置,则直接使用FilenamePattern 的值。
    MaxHistory 配置的作用:
      该值是保留历史文件的最大数量,一般情况下,我们是要保留所有的日志文件的,所以尽可能大就好。
    CleanHistoryOnstart 配置的作用:
      该值是指定在程序启动时是否要对历史日志进行清理删除,一般我们都会保留日志,所以设置为false。或者直接不设置该也是一样的。

    最后还有一个问题就是,当程序正常结束时会调用shutdown() 对资源进行清理及回收,但是在这个过程中最新的日志文件会被截断,从而导致了最新的一个日志文件中的内容全部丢失,这显示违反了我们的初衷。所以这个算是一个不小的BUG(个人觉得),不过这个地方也不麻烦,只要修改一个地方就可以了。
    如下: fileappender.cxx 文件,将函数中的rollover() 的调用注释掉就可以了。

    1 void TimeBasedRollingFileAppender::close()
    2 {
    3     // rollover();
    4     FileAppenderBase::close();
    5 }
  • 相关阅读:
    P4370[Code+#4]组合数问题2【数学,堆】
    牛客挑战赛53G同源数组(Easy Version)【NTT】
    P3577[POI2014]TURTourism【状压dp】
    P1232[NOI2013]树的计数【思维】
    AS3 CookBook学习整理(十一)
    AS3 CookBook学习整理(十五)
    AS3 CookBook学习整理(十四)
    AS3 CookBook学习整理(十二)
    AS3 CookBook学习整理(八)
    AS3 CookBook学习整理(十六)
  • 原文地址:https://www.cnblogs.com/suyunhong/p/6802841.html
Copyright © 2011-2022 走看看