配置Tomcat日志轮换窗口

时间:2018-02-06 15:31:41

标签: java tomcat

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

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

1 个答案:

答案 0 :(得分: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>