log4j按天输出问题

lemens 发布于 2014/12/18 11:32
阅读 1K+
收藏 0

运行环境:tomcat MyEclipse windows

最近配置了下log日志,按照每天一个文件的格式生成,结果测试时候发现每次更改系统个日期之后,新一天的log会直接覆盖旧的log。我测试的方式是在tomcat部署之后运行,先生成当天的日志,然后更改系统时间,再继续做操作产生新的日志,然后去log目录下检查。

log4j.xml配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--输出到控制台-->
<appender name="LOG.Console" class="org.apache.log4j.ConsoleAppender">
   <param name="Target" value="System.out"/>    
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH🇲🇲ss} [%p] [%C-%M] %m%n"/>
</layout>
</appender>
<!--INFO信息输出-->
<appender name="LOG.INFO" class="org.apache.log4j.DailyRollingFileAppender">
<!--  --><param name="File" value="E:/logs/info_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH🇲🇲ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<!--WARN信息输出-->
<appender name="LOG.WARN" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/warn_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH🇲🇲ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<!--ERROR信息输出-->
<appender name="LOG.ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/error_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH🇲🇲ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- 根日志输出器root logger -->
<root>
<priority value="info" />
<appender-ref ref="LOG.Console" />
<appender-ref ref="LOG.INFO" />
<appender-ref ref="LOG.WARN" />
<appender-ref ref="LOG.ERROR" />
</root>
</log4j:configuration>

web.xml配置:

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param> 
<context-param>  
<param-name>log4jRefreshInterval</param-name>  
<param-value>60000</param-value>  
</context-param>  
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

哪位大侠遇到过类似的情况吗?

加载中
0
lemens
lemens
经过反复测试,发现上面的配置是对的,但是测试方法有问题,测试日志生成时用MyEclipse10运行tomcat然后修改系统时间,log日志无法完成按天生成,而是会新的日志覆盖旧的;但是如果在eclipse上启动tomcat测试,修改系统时间,log日志是可以正常按天生成的,这个是测试环境导致的。这个配置放到服务器上测试,log按天生成没问题的。给后来人作参考。有不对的地方欢迎一起讨论呀。
返回顶部
顶部