运行环境: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:mm: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:mm: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:mm: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:mm: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>
配置是对的,但是测试方法有问题,测试日志生成时用MyEclipse10运行tomcat然后修改系统时间,log日志无法完成按天生成,而是会新的日志覆盖旧的;但是如果在eclipse上启动tomcat测试,修改系统时间,log日志是可以正常按天生成的,这个是测试环境导致的。这个配置放到服务器上测试,log按天生成没问题的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。