有时,当我启动我的Java应用程序时,logback拒绝向我的日志文件写入任何内容。有时它也会拒绝在午夜(或者在午夜之后的第一次记录事件)上滚动日志文件,这会导致记录事件丢失到无效状态。当我看到我的主要日志文件时,logbacks未能滚动日志,它将有一个像23:59和昨天的日期,任何和所有日志后的声明将不可挽回地丢失。我有一个相当简单的配置文件,它看起来是正确的。当然,应该是是正确的,因为它在大多数时间都有效。Logback有时不会写入日志文件,有时不会滚动日志文件
这是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--See http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
<!--and http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy-->
<!--for further documentation-->
<append>true</append>
<File>aggregator.log</File>
<encoder>
<!-- was: %d{yyyy-MM-dd HH:mm:ss}%5p [%t] (%F:%L) - %msg%n -->
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- By setting the name to .gz here, we get free compression. -->
<fileNamePattern>aggregator.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="file"/>
<appender-ref ref="console"/>
</root>
</configuration>
不幸的是,我不能可靠地重现这个错误,所以调试实在是有点困难。有人能告诉我我做错了什么,或者还有什么问题?如果它有任何帮助,我将STDOUT和STDERR重定向到/ dev/null(我在linux上运行,btw)。
我刚刚更新到最新的点发布。希望有帮助。 – 2010-08-25 14:20:32