使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
来源:互联网 发布:小众软件app 编辑:程序博客网 时间:2024/06/02 23:36
使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
- 博客分类:
- Java
log4jApacheXMLHTML
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
测试用例:
TimeBasedRollingPolicy的使用可参考:
http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
比如时间戳精确到小时,格式为.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。配置可参考:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
- <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
- <!-- appender -->
- <!-- STDOUT -->
- <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d %p [%c] - %m%n" />
- </layout>
- </appender>
- <!-- FILE -->
- <appender name="FILE"
- class="org.apache.log4j.rolling.RollingFileAppender">
- <rollingPolicy
- class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
- <param name="FileNamePattern"
- value="d:/logs/file.%d{yyyy-MM-dd-HH}" />
- </rollingPolicy>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="%m%n" />
- </layout>
- </appender>
- <logger name="view">
- <level value="info" />
- <appender-ref ref="FILE" />
- </logger>
- <root>
- <level value="info" />
- <appender-ref ref="STDOUT" />
- </root>
- </log4j:configuration>
注意:org.apache.log4j.rolling.RollingFileAppender是rolling包下的,而不是原来的org.apache.log4j.RollingFileAppender
测试用例:
- public static void main(String[] args) {
- Logger logger = Logger.getLogger("view");
- logger.info("test");
- }
TimeBasedRollingPolicy的使用可参考:
http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
- 使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
- LOG4J 的 RollingFileAppender
- 如何使用log4j.RollingFileAppender记录日志
- Log4j日志文件的使用
- Log4j日志文件的使用
- log4j文件日志的使用
- Log4j输出包/类的日志文件
- log4j 生成有日期的日志文件
- 使用log4j生成日志文件
- 使用log4j生成日志文件
- Log4j RollingFileAppender和DailyRollingFileAppender的配置
- 日志文件log4j的使用总结
- 使用log4j生成动态日志文件-文件名根据时间自动生成
- Log4j使用(一):每天生成一个日志文件DailyRollingFileAppender的使用
- Myeclipse使用log4j生成日志文件
- Log4j 为单独的类生成单独的日志文件
- log4cpp的RollingFileAppender异常情况下日志文件不拆分的一种可能解决方法
- log4j日志的使用
- 论hibernate中的session.flush()和transaction.commit()的差异
- jsp中静态包含和动态包含小结
- HDU 1573 X问题 (中国剩余定理解的个数)
- Objective-C——消息、Category和Protocol
- 环境变量(转)
- 使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
- C#命名空间与java包的区别
- JSP 自定义标签(Tag)
- hdu 1255 覆盖的面积
- Jsp中重定向小结
- 硬中断完全处理过程
- C#一个简单windows服务的例子
- HTTP POST GET 本质区别详解
- WWDC2012:Objective-C的新特性