一尘不染

配置Tomcat日志轮换窗口

tomcat

我使用tomcat 9.0,slf4j进行日志记录。问题在于日志文件太大(17GM-
我看到的最大值)。我创建了基于Java的日志删除系统。因为tomcat每天都会创建新的日志文件。但这是一个出乎意料的时刻。Tomcat会随时创建日志文件,有时可能会使用旧文件。例如今天是16日。该文件可以使用到18日。这就是为什么尺寸变大的原因。即使配置正确(针对我的情况)日志创建,我也可能在一个文件中保留2天的日志。例如,从16日1:00
pm到17日12:00 am。

因此,我想以某种方式配置旋转。有人可以帮忙吗?


阅读 292

收藏
2020-06-16

共1个答案

一尘不染

slf4j只是一个接口,您必须使用log4j,logback,common-logging等(slf4j的示例)。

如果使用slf4j +
logback,则可以在logback.xml文件中设置rollingPolicy。它可以是TimeBasedRollingPolicy,Size或两者的组合。

例如,要设置基于时间的策略以每天创建日志文件并将较旧的文件移动到归档文件夹并仅保留最近30天的日志,则可以将其添加到logback.xml文件中

<appender name="app" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/appname/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  <fileNamePattern>${catalina.home}/logs/archive/appname/app.%d{yyyy-MM-dd}.old.log</fileNamePattern>
  <maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
  <pattern>[%X{key}]%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC} %-5level %logger{35}.%M[%L]-[%t] - %msg %n</pattern>
</encoder>
2020-06-16