参考自: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() 的调用注释掉就可以了。

 void TimeBasedRollingFileAppender::close()
{
// rollover();
FileAppenderBase::close();
}

log4cplus TimeBasedRollingFileAppender的更多相关文章

  1. log4cplus库的properties文件配置

    使用时需要先获取一个Logger的对象,下面获取Logger对象的内容对应于配置: Logger LogConsole = Logger::getInstance(LOG4CPLUS_TEXT(&qu ...

  2. log4cplus 在配置文件中设置文件路径,程序自动创建目录,且在日志文件前按日期创建相应的目录

    #include <string> #include <cstdio> #include <log4cplus/logger.h> #include <log ...

  3. 当年只会C# 所以写C++就成这样了! log4cplus -> log4net

    属实C++不会. 目前帮朋友弄个小项目需要小折腾一下. c# 一直采用 log4net ,c++的呢,找找有个log4cplus  知识有限,做个通用类吧.别把精力放在这里. 动手创建个静态类. 为了 ...

  4. log4cplus 直接创建logger 对象

    #include <log4cplus/loggingmacros.h> #include <log4cplus/fileappender.h> #include <lo ...

  5. Log4cplus使用

    Log4cplus使用¶ 1.1 简介 log4cplus是C++编写的开源日志系统,前身是java编写的log4j日志系统.log4cplus具有线程安全.灵活.以及多粒度控制的特点,通过将信息划分 ...

  6. 【原】log4cplus使用说明

    网上关于开源日志工具log4cplus的说明有很多,但大多略显复杂,本文主要从实用的角度,介绍一种最简单而且又实用的方法.本文的方法已经足够满足实际工程中的使用需求,而且不需要很复杂的流程,可以实现. ...

  7. Log4Cplus的介绍

    Log4Cplus是一款很好的开源日志打印程序,该日志打印程序的配置文件为类似INI的文件,以下为该日志打印程序配置文件中的说明: 1.#—注释行的开头表示,即以该字符开头的行,改日志程序不解释改行内 ...

  8. 说说log4cplus

    <C++ primer 第五版>已经翻了一段时间了,每天早上的班车上看一个小时.书是好书,可惜很多知识还是停留在表面上.每天除了翻书,一是也找到不合适的方法进一步深入,晚上看到新闻联播的老 ...

  9. log4cplus配置文件使用

    简介 log4cplus是log4j的c++移植版,是c++中一个很好的打印日志的库.它与另外一个c++的log库log4cxx相比较,好处是不依赖于libapr和libaprutil,可以静态链接到 ...

随机推荐

  1. Spring学习笔记(8)——依赖注入

    spring依赖注入使用构造器注入使用属性setter方法注入使用Field注入(用于注解方式) 注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发 ...

  2. Stm32CubeMX5 配置 外部中断

    实验使用连接PA8引脚的按键触发中断,外部中断使用双边沿触发,这样就可以检测按键按下与松开,当按键按下时点亮LED, 当按键松开是关闭LED,在中断服务函数中只置位相应的标志,在main函数中具体处理 ...

  3. 【LeetCode】Heap

    [215] Kth Largest Element in an Array [Medium] 给个无序数组,返回第K大的数字. 方法1. 直接使用优先队列 priority_queue class S ...

  4. Eclipse导入的Maven项目没有Build Path

    我导入的是 Signal-Server项目到 Eclipse中,发现 src 文件夹上面没有#号,包视图和语法提示都没有 ~~ 解决方法: 修改 Project Facets 在 项目右键 -> ...

  5. 数组循环移动 空间复杂度O(1)

    ---恢复内容开始--- 题目大意: 输入元素个数,输入数组,输入右移步数,输出结果: 基本思路: 可以把数组(从下标为0开始存储)看成两部分,分别是[0,n-step-1],[n-step,n-1] ...

  6. 【Movist Pro】macOS上的绝佳媒体播放器

    Movist Pro是适用于Mac的高性能电影播放器,如果比较流程和界面,则Movist与QuickTime非常相似.因此,采用播放器几乎不会有任何问题.使用Quicktime或FFmpeg解码电影并 ...

  7. leetcode-12双周赛-1245-树的直径

    题目描述: 方法一:深度优先: class Solution: def treeDiameter(self, edges: List[List[int]]) -> int: adjacency ...

  8. Jmeter-【JSON Extractor】-响应结果中数组多个相同key取值

    一.请求返回样式 二.取所有option的值 三.查看结果

  9. 微信支付完成 vue 页面不跳转问题

    遇到的问题是 vue 调用微信支付 回调成功以后,页面路由不跳转. 解决的办法是用window.location.href /** * @method 支付费用方法 * @param data:后台返 ...

  10. sklearn中standardscaler中fit_transform()和transform()有什么区别,应该怎么使用?

    在根据机器学习书中提供的实例中,看到需要对训练和测试的特征数据进行标准化. 但是使用的是有两个函数, 对于训练数据,使用的是fit_transform()函数 对于测试数据,使用的是tansform( ...