我的logback.xml文件如下,并且我设置MaxHistory = 1以便删除旧的日志文件并且仅将日志保留一天。但是我发现旧文件没有被删除。我仍然可以看到它们为:app.log.2019-02-11 app.log.2019-02-12
<configuration>
<property name="APP_NAME" value="logbacktest-logs" />
<property name="LOG_HOME" value="/tmp/${APP_NAME}" />
<property name="ENCODER_PATTERN" value="%d %C.%method:%L _ %msg%n"/>
<contextName>${APP_NAME}</contextName>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${ENCODER_PATTERN}</pattern>
</encoder>
</appender>
<appender name="APP_APPEND" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.log.%d{yyyy-MM-dd}</fileNamePattern>
<MaxHistory>1</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${ENCODER_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="APP_APPEND" />
</root>
</configuration>
答案 0 :(得分:2)
这是我的日志的一部分
12:11:32,358 | -INFO在c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy中-午夜滚动。
这表示您的应用程序在这段时间内没有启动,则没有机会删除它
将maxHistory设置为5时,我遇到了同样的问题,有时会删除5个日志文件,但是当我的应用程序死亡时,由于没有机会删除,因此无法删除日志。
引用了logback文档,它说您可以使用此:
<cleanHistoryOnStart> true </cleanHistoryOnStart>
如果设置为true,则将在启动附加程序时执行归档删除。默认情况下,此属性设置为false。
通常在翻转过程中执行归档删除。但是,某些应用程序的生存时间可能不足以触发翻转。因此,对于这种短暂的应用程序,归档删除可能永远都没有执行的机会。通过将cleanHistoryOnStart设置为true,将在附加程序启动时执行归档删除。
将您的logback-spring.xml修改为:
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>1</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>