2015-11-07 55 views
1

我有一个使用logback的简单问题。 我为RollingFileAppender的应用程序使用Logback。 它运行良好,但是当我重新启动我的应用程序时,它不会追加现有文件,而是出现在某处。在Logback RollingFileAppender中“附加”的选项是什么?

这是用于我的应用程序的logback配置的xml文件。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- hourly rollover --> 
     <fileNamePattern>/home/log/logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <!-- or whenever the file size reaches 100MB --> 
      <maxFileSize>100MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
     <!-- keep 30 hours' worth of history --> 
     <maxHistory>30</maxHistory> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%-4r [%thread] %X{clientIP} %d{HH:mm:ss.SSS} [%p] [%[email protected]%C{1}:%L] - %m%n</pattern> 
    </encoder> 
</appender> 

例如,当我第一次启动应用程序时,它根据上面的配置创建一个日志文件。

-rw-r--r-- 1 root root  6926 Nov 7 10:19 logFile.2015-11-07.log 

但是,如果我停止应用程序并重新启动,我希望登录上述文件中添加数据,但它不会(我甚至找不到这个地方丢失的日志存在。)提前

谢谢。

+0

http://stackoverflow.com/questions/22188936/timebasedrollingpolicy-not-rolling-unless-there-are-new-logs简短版本:它不是时间触发的,而是记录事件触发的。没有记录事件意味着没有翻转。在配置为每隔一分钟转换一次的配置中,意味着没有任何记录事件到达的任何分钟的文件。 – bakki

回答

1

documentation状态

注意,在RollingFileAppenderfile属性(的 TimeBasedRollingPolicy母体)可被设置或省略。通过设置包含FileAppender的文件属性 ,可以将活动日志文件的位置和归档日志文件的位置分开。 当前日志将始终针对属性指定的文件 。由此可见,当前活动的 日志文件的名称不会随时间而改变。 但是,如果您选择省略 文件属性,则将根据fileNamePattern的值重新计算每个 期间的活动文件。

通过重新计算,他们的意思是一个新的文件将被创建(或现有的截断)。

所以只需提供一个适当命名的file属性。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>/home/log/logFile.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- hourly rollover --> 
     <fileNamePattern>/home/log/logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <!-- or whenever the file size reaches 100MB --> 
      <maxFileSize>100MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
     <!-- keep 30 hours' worth of history --> 
     <maxHistory>30</maxHistory> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%-4r [%thread] %X{clientIP} %d{HH:mm:ss.SSS} [%p] [%[email protected]%C{1}:%L] - %m%n</pattern> 
    </encoder> 
</appender> 

随着file,你告诉的logback其是有源文件,因此,其追加到(确定是否翻转是必要之后)。

+0

酷,感谢您的详细解释! – BinaryProbe