首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

应用log4j扩展包的RollingFileAppender生成带时间戳的日志文件

2012-11-07 
使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件DailyRollingFileAppender生成的文件是不带

使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
DailyRollingFileAppender生成的文件是不带时间戳的,必须在某个时间点后,才对原来文件加上时间戳进行重命名。
比如时间戳精确到小时,格式为.yyyy-MM-dd-HH,当前时间为2011-05-05的5点,那么日志为
log
时间变为6点之后(并且6点有日志访问),日志为
log
log.2011-05-05-05

因为log4j是事件触发的,如果某段时间没有日志访问,即使时间点到了,也不会加上时间戳进行重命名。比如两天后才有日志访问,这时才产生log.2011-05-05-05这个文件。这样会造成日志统计中,统计不到这个文件。

解决方法是,生成日志文件的时候就已经加上时间戳。比如5点时候的日志,就已经是log.2011-05-05-05。原log4j没有实现这个功能,需要自己继承FileAppender来实现一个Appender。我看了一下源码,可以参考DailyRollingFileAppender,修改一下它的构造函数和rollOver。自己没有去实验,不知道能不能成功。

apache-log4j-extras是log4j的扩展包,其中TimeBasedRollingPolicy可以实现这个需求。
需要的包:
log4j-1.2.15.jar
apache-log4j-extras-1.0.jar
注意:log4j必须是1.2.15以上,14不行

log4j配置文件不能使用properties,必须使用xml。配置可参考:


注意:org.apache.log4j.rolling.RollingFileAppender是rolling包下的,而不是原来的org.apache.log4j.RollingFileAppender

测试用例:

不需要使用rolling包,直接产生带时间戳的日志文件。 4 楼 flyzsd 2011-05-09   用 SLF4J + LOGBACK

热点排行