我有一个使用logback的简单问题。 我在RollingFileAppender中使用Logback作为我的应用程序。 它工作得很好但是当我重新启动我的应用程序时,它不会附加现有文件但是已经到了某个地方。
这是我的应用程序的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] [%thread@%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 :(得分:1)
请注意
的值file
中的RollingFileAppender
属性TimeBasedRollingPolicy
)可以设置或省略。通过设置 包含FileAppender
的文件属性,你可以解耦 活动日志文件的位置以及存档日志的位置 文件。 当前日志将始终以指定的文件为目标 由file
属性。以下是当前活动的名称 日志文件不会随时间而改变。 但是,如果您选择省略 文件属性,然后将为每个活动文件重新计算活动文件 期限基于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] [%thread@%C{1}:%L] - %m%n</pattern>
</encoder>
</appender>
使用file
,您可以告诉Logback哪个是活动文件,因此可以追加到哪个(在确定是否需要翻转之后)。