logback 没有生成新的日志文件
Posted
技术标签:
【中文标题】logback 没有生成新的日志文件【英文标题】:logback not generating new log file 【发布时间】:2020-05-30 03:27:26 【问题描述】:我在我的 Micronaut 项目中使用下面的 logback.xml,它没有按照 xml 配置中提供的 rollingPolicy 生成新的日志文件。我尝试了 SizeAndTimeBasedRollingPolicy 和 TimeBasedRollingPolicy,但没有成功。
Micronaut 版本:1.2.2
logback-经典:1.2.3
文件:logback.xml
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/my-app.log</file>
<encoder>
<pattern>%cyan(%dyyyy-MM-dd HH:mm:ss.SSS) %gray([%thread]) %highlight(%-5level) %magenta(%logger36):%line- %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.RollingFileAppender">
<fileNamePattern>
logs/my-app.log-%dyyyy-MM-dd-%i.log.gz
</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>1MB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%cyan(%dyyyy-MM-dd HH:mm:ss.SSS) %gray([%thread]) %highlight(%-5level) %magenta(%logger36):%line- %msg%n</pattern>
</encoder>
</appender>
<root level="ALL">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
【问题讨论】:
【参考方案1】:如果我没记错的话,您的 maxHistory 策略会阻止您构建多个文件。相反,它会删除旧的,并为新的一天或达到 1mb 大小时创建一个新的。
在这种情况下,maxHistory 必须与您所说的 TimeBasedRollingPolicy 结合使用,然后 maxHistory 是几天的参数。如果没有 TimeBasedRollingPolicy,它可能只是文件数。
【讨论】:
在应用程序中,我们已将 maxHistory 设置为 60,为了发布问题,我将其保留为 1,(也已更新问题)目前在服务器上,它仅将所有日志附加到 1 个文件并且文件大小增加以 GB 为单位。【参考方案2】:根据我自己的 logback 经验,您应该执行以下操作:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
...
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/my-app.log-%dyyyy-MM-dd-%i.log.gz</fileNamePattern>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>1MB</MaxFileSize>
</triggeringPolicy>
...
</appender>
目前,您正在使用“RollingFileAppender”作为策略,因此无法正常工作。
【讨论】:
感谢 Orcen,不幸的是它也不适合我。 :( 您是否尝试在您的用例中使用<maxFileSize>1MB</maxFileSize>
而不是<totalSizeCap>1MB</totalSizeCap>
?实际上,totalSizeCap 是说您将在所有日志文件中仅保留 1MB 的日志。此外,您可以将 SizeBasedRollingPolicy 用于您的 rollingPolicy 并使用 RollingFileAppender 用于您的 appender。来源:logback.qos.ch/manual/appenders.html以上是关于logback 没有生成新的日志文件的主要内容,如果未能解决你的问题,请参考以下文章
spring boot logback日志logback 生成日志文件在本项目下,而不在指定的日志文件目录下/指定日志文件到达最大值后不按照配置进行切割