【问题标题】:logback not generating new log filelogback 没有生成新的日志文件
【发布时间】: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(%d{yyyy-MM-dd HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}):%line- %msg%n</pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.RollingFileAppender">
            <fileNamePattern>
                logs/my-app.log-%d{yyyy-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(%d{yyyy-MM-dd HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}):%line- %msg%n</pattern>
        </encoder>
    </appender>

    <root level="ALL">
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
    </root>


</configuration>

【问题讨论】:

    标签: java pom.xml logback


    【解决方案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-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
        </rollingPolicy>
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>1MB</MaxFileSize>
        </triggeringPolicy>
    ...
    </appender>
    

    目前,您正在使用“RollingFileAppender”作为策略,因此无法正常工作。

    【讨论】:

    • 感谢 Orcen,不幸的是它也不适合我。 :(
    • 您是否尝试在您的用例中使用&lt;maxFileSize&gt;1MB&lt;/maxFileSize&gt; 而不是&lt;totalSizeCap&gt;1MB&lt;/totalSizeCap&gt;?实际上,totalSizeCap 是说您将在所有日志文件中仅保留 1MB 的日志。此外,您可以将 SizeBasedRollingPolicy 用于您的 rollingPolicy 并使用 RollingFileAppender 用于您的 appender。来源:logback.qos.ch/manual/appenders.html
    猜你喜欢
    • 1970-01-01
    • 2019-11-05
    • 2019-10-05
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多