使用 logback 滚动短期 Java 应用程序的日志

问题描述 投票:0回答:1

我为我的一项批处理任务开发了一个 Java Springboot 应用程序。我将使用该应用程序的 jar 和 shell 脚本。 Shell 脚本将手动执行或通过某些应用程序执行,并且 shell 脚本将使用类似下面的命令执行 jar。

java -cp /pathToDir/myapp.jar

这个执行过程并不耗时,只需要几分钟。我使用 logback 作为此 Java 应用程序的日志记录框架,并使用 logback.xml 进行配置。我添加了滚动策略来每天滚动登录(类似于下面)。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_ROOT}/${LOG_FILE_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_ROOT}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

但它根本不会发生,因为每次应用程序运行时,它都会使用现有的日志文件。由于它是短暂的应用程序,记录事件不会导致任何文件滚动。我搜索了任何解决方案,但找不到任何解决方案。只是寻求可以解决此问题的解决方案。

java logging logback slf4j logrotate
1个回答
0
投票

我建议省略

file
属性。这将确保新创建的日志文件具有所需的日期。

此外,您可能应该尝试更简单的

TimeBasedRollingPolicy
而不是
SizeAndTimeBasedRollingPolicy

根据日志文件的大小,

totalSizeCap
也可能有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.