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,可以静态链接到 ...
随机推荐
- Ubuntu apt-get 更新/查看软件
ubuntu 升级软件: sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 ubu ...
- java全栈商业小程序开发
此次开发只为学习和巩固,第一次学习开发 一.开发前需要了解: 开发框架MVVM.痛点.开源工具.VUE前端框架.微信支付模块.uni-app前端框架.小程序申请.开发工具下载.编写测试小程序.小程序结 ...
- js的width函数
参考: (1)https://blog.csdn.net/chen__jinfei/article/details/6520678 (2)https://developer.mozilla.org/e ...
- loj2573[TJOI2018]数字计算
题意:操作1:x=x*m,输出x%mod.2.x/=map[m].m即第m次操作,保证该次操作为1操作,并且每个操作最多只会被删一次.q<=1e5. 线段树维护操作信息的乘积,删除把对应位置的权 ...
- js-原生js触发器使用
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Machine Learning 之二,什么监督性学习,非监督性学习。
1.什么是监督性学习?Supervised Machine Learning. 在监督性学习,我们给定一个数据集以及我们已经知道正确输出的结果,然后找到一个输入和输出的关系. In Supervis ...
- django-filters,rangefilter的用法,不在某个范围内
找了好久在网上都没找到完整的示例代码,东拼西凑,连蒙带猜出来一句. not_in=django_filters.NumericRangeFilter(field_name="pid" ...
- java的collection&&map集合总结
把自定义的对象放入HashSet或LinkedHashSet,为保证元素内容不重复,需要: • 覆盖hashCode( )方法,保证相同对象返回相同的值,提供调用equals( )方法的机会.• 覆盖 ...
- unzip失败,unzip:报错End-of-central-directory signature not found、scp:报错no space left on device
文章目录 问题 解决 拓展 问题 通过rz命令传本地文件到本地服务器,失败. 通过scp命令尝试报错: no space left on device 意思是目的机器内存不够用了,但是传过去了,但是没 ...
- jQuery 加载事件
1. jquery加载事件实现 ① $(document).ready(function处理); ② $().ready(function处理); ③ $(function处理); 对第一种加载的封 ...