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() 的调用注释掉就可以了。
void TimeBasedRollingFileAppender::close()
{
// rollover();
FileAppenderBase::close();
}
log4cplus TimeBasedRollingFileAppender的更多相关文章
- log4cplus库的properties文件配置
使用时需要先获取一个Logger的对象,下面获取Logger对象的内容对应于配置: Logger LogConsole = Logger::getInstance(LOG4CPLUS_TEXT(&qu ...
- log4cplus 在配置文件中设置文件路径,程序自动创建目录,且在日志文件前按日期创建相应的目录
#include <string> #include <cstdio> #include <log4cplus/logger.h> #include <log ...
- 当年只会C# 所以写C++就成这样了! log4cplus -> log4net
属实C++不会. 目前帮朋友弄个小项目需要小折腾一下. c# 一直采用 log4net ,c++的呢,找找有个log4cplus 知识有限,做个通用类吧.别把精力放在这里. 动手创建个静态类. 为了 ...
- log4cplus 直接创建logger 对象
#include <log4cplus/loggingmacros.h> #include <log4cplus/fileappender.h> #include <lo ...
- Log4cplus使用
Log4cplus使用¶ 1.1 简介 log4cplus是C++编写的开源日志系统,前身是java编写的log4j日志系统.log4cplus具有线程安全.灵活.以及多粒度控制的特点,通过将信息划分 ...
- 【原】log4cplus使用说明
网上关于开源日志工具log4cplus的说明有很多,但大多略显复杂,本文主要从实用的角度,介绍一种最简单而且又实用的方法.本文的方法已经足够满足实际工程中的使用需求,而且不需要很复杂的流程,可以实现. ...
- Log4Cplus的介绍
Log4Cplus是一款很好的开源日志打印程序,该日志打印程序的配置文件为类似INI的文件,以下为该日志打印程序配置文件中的说明: 1.#—注释行的开头表示,即以该字符开头的行,改日志程序不解释改行内 ...
- 说说log4cplus
<C++ primer 第五版>已经翻了一段时间了,每天早上的班车上看一个小时.书是好书,可惜很多知识还是停留在表面上.每天除了翻书,一是也找到不合适的方法进一步深入,晚上看到新闻联播的老 ...
- log4cplus配置文件使用
简介 log4cplus是log4j的c++移植版,是c++中一个很好的打印日志的库.它与另外一个c++的log库log4cxx相比较,好处是不依赖于libapr和libaprutil,可以静态链接到 ...
随机推荐
- Darknet YOLOv3 on Jetson Nano
推荐比较好的博客:https://ai4sig.org/2019/06/jetson-nano-darknet-yolov3/ 用的AlexeyAB的版本,并且给出了yolov3和tiny的效果对比. ...
- git 的版本控制
作为全球第一大代码托管平台,github 成为了许多人的选择,所以这里写一下关于GitHub的有关知识,写这个的目的还是巩固自己的学习,一方面可以提高自己,另一方面回头看一下,有什么更深层次的东西还可 ...
- 【扯淡篇】CTSC/APIO/SDOI R2时在干什么?有没有空?可以来做分母吗?
注意: 我比较弱, 并没有办法把外链bgm搞成https, 所以大家可以选择"加载不安全的脚本"或者把https改成http以获得更好的阅读体验! 据说, 退役了要写写回忆录. 但 ...
- Codeforces 1163D DP + KMP
题意:给你一个字符串s,以及两个字符串s1,s2.s中有些位置是*,意思是可以随便填字母,s的子串中如果出现一次s1,就加一分,如果出现一次s2,就减一分.问这个字符串s最多可以得多少分? 思路: 设 ...
- 2018-2019 ACM-ICPC, Asia Seoul Regional Contest K TV Show Game 2-sat
题目传送门 题意: 有n个人,k盏灯,灯有红蓝两种颜色,每个人都猜了三种灯的颜色,问如何安排灯的颜色,使得每个人猜的灯至少有两个是对的. 思路: 很容易想到2-sat,但是显然枚举每个人猜对的情况是不 ...
- ZedGraph怎样在生成曲线时随机生成不一样的颜色
场景 在使用ZedGraph生成多条曲线时为了能区分曲线颜色,要求随机设置曲线颜色. 首先从System.Drawing.Color中获取所有颜色的对象的数组,然后将其顺序打乱随机排序,然后在生成曲线 ...
- tcp/ip的通俗讲述(转)
源地址:https://www.runoob.com/tcpip/tcpip-tutorial.html 对于我们来说网络世界丰富多彩,对于互联网来说也就是数据根据相应的规则在跑来跑去.(这些规则就是 ...
- Shiro学习(15)单点登录
Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录.此处我们使用Ja ...
- Linux服务器的16个监控命令
想不想知道你的服务器到底在干什么?那么你要知道本文介绍的这些基本命令.一旦你熟悉掌握了这些命令,就为成为专业的 Linux系统管理员打下了基础. 你可以通过图形化用户界面(GUI)程序来获取这些外壳命 ...
- firefox显示 您的连接不安全 解决办法
在地址栏键入"about:config" 点击“我了解此风险” 在下方任意位置右键,选择新建布尔值 输入首选项名称为“security.enterprise_roots.enabl ...