【问题标题】:why is my logback Daily RollingFileAppender not rolling and still appending to one file?为什么我的 logback Daily RollingFileAppender 没有滚动并且仍然附加到一个文件?
【发布时间】: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 以包含分钟。例如:&lt;fileNamePattern&gt;logs/myApp.%d{yyyy-MM-dd-HH-mm}.log&lt;/fileNamePattern&gt; 并且日志文件应该每分钟滚动一次。
  • 那个appender甚至被使用了吗?您只向我们展示了您的部分配置,因此问题可能出在省略的位上。
  • 是的,肯定使用了 FILE 附加程序;我将 ~logs/~ 添加到 fileNamePattern。还是不滚。正在创建日志文件 logs/myApp.log,而不是创建日志文件名称中带有日期模式的日志文件。

标签: spring logging logback


【解决方案1】:

您是否在配置中忘记了这一点:

<root level="INFO">
    <appender-ref ref="FILE"/>
</root>

在您的日志文件追加新行之前,我不会滚动。

【讨论】:

    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    相关资源
    最近更新 更多