【发布时间】:2020-03-08 15:11:07
【问题描述】:
我在 Spring 应用程序中通过 Lombok 和 @Slf4j 注释使用 Logback,因此我的日志记录配置在 logback-spring.xml 文件中。一般日志记录正在工作,但问题是我正在尝试创建每日日志文件,而是继续附加到单个日志文件。我使用了来自this SO post 的配置,但它仍然无法正常工作。
这是我的 spring-logback.xml 文件的 appender 部分:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/myApp.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logs/myApp.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>2MB</MaxFileSize>
</triggeringPolicy>
</appender>
然后我找到了另一个SO post here,并尝试了该配置,但仍然无法正常工作。这是配置:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/myApp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>myApp-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
会不会是Spring的原因,需要另外配置?
【问题讨论】:
-
在第二个配置中,fileNamePattern 缺少
log/。您可以尝试添加并测试它。要测试触发器是否正常工作,您可以更改 fileNamePattern 以包含分钟。例如:<fileNamePattern>logs/myApp.%d{yyyy-MM-dd-HH-mm}.log</fileNamePattern>并且日志文件应该每分钟滚动一次。 -
那个appender甚至被使用了吗?您只向我们展示了您的部分配置,因此问题可能出在省略的位上。
-
是的,肯定使用了 FILE 附加程序;我将 ~logs/~ 添加到 fileNamePattern。还是不滚。正在创建日志文件 logs/myApp.log,而不是创建日志文件名称中带有日期模式的日志文件。