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

log4j用DailyRollingFileAppender每半天切换一个文件,切换了,还是在写老日志文件,该如何解决

2012-03-19 
log4j用DailyRollingFileAppender每半天切换一个文件,切换了,还是在写老日志文件最近发现很奇怪的现象,Log

log4j用DailyRollingFileAppender每半天切换一个文件,切换了,还是在写老日志文件
最近发现很奇怪的现象,Log4j我设置如下
log4j.rootLogger=ERROR,stdout
log4j.logger.NoModule=INFO,file_NM
log4j.logger.infos=INFO,infos
log4j.logger.error=INFO,error

log4j.appender.infos=org.apache.log4j.DailyRollingFileAppender
log4j.appender.infos.File=${WORKDIR}/logs/infos.log 
log4j.appender.infos.DatePattern='.'yyyy-MM-dd-a
log4j.appender.infos.layout=org.apache.log4j.PatternLayout
log4j.appender.infos.layout.ConversionPattern=%-5r [%t][%d{ISO8601}]-[%5p]%x-[%m]%n 

没半天切换一个文件,但是发现在中午12点的时候切换,下午12点过后,一直在写上午的那个日志文件.
Log4j版本是log4j-1.2.11.jar
JDK版本是:
java version "1.6.0_07"
Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
Diablo Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
运行系统是:
FreeBSD noticeserverpri.cqrcb.com 7.1-RELEASE FreeBSD 7.1-RELEASE 
#1: Thu Mar 12 08:28:35 CST 2009  
root@smsserver.develop.cqrcb.com:/usr/src/sys/i386/compile/RS i386


[解决办法]
感觉你的配置没有什么问题....应该是你说的效果才对to be rolled at midday and midnight

Java code
public static void main(String[] args) throws Exception {        DailyRollingFileAppender appender=new DailyRollingFileAppender(null,"e:\\test.login","'.'yyyy-MM-dd-a");        Method method=DailyRollingFileAppender.class.getDeclaredMethod("computeCheckPeriod", new Class[]{});        method.setAccessible(true);        System.out.println(method.invoke(appender, null));        method=DailyRollingFileAppender.class.getDeclaredMethod("rollOver", new Class[]{});        method.setAccessible(true);        method.invoke(appender, null);        }
[解决办法]
你是不是有多个进程在运行?用同一个log4j.xml?
[解决办法]
给个小的提示,也许有用。
如果到切换时间点的时候,服务器仍然正常运行,log应该会写到新文件里面。
如果这期间重启服务,再跑程序,那么程序仍然会写到原来的文件里面。

热点排行