Logback:当文件增长超过 maxFileSize 时出现异常

标签 logback slf4j

我在 logback.xml 中有以下滚动策略。
问题是,如果文件大小超过 10 MB,则会引发异常。 看起来它正在尝试创建一个新文件,但由于同一日期已经存在相同的文件,因此它无法执行此操作并引发异常。
例如,我们已经有一个文件 pvExport.2016-05-15.log,如果 pvExport.log 增长超过 10 MB,它将尝试创建与 pvExport.2016-05-15.log 同名的文件,并且因此会抛出异常,但不确定

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${EXPORT_LOG_HOME}/pvExport.%d{yyyy-MM-dd}.log
                        </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

最佳答案

在这种情况下,您的fileNamePattern实际上是无效的。来自 docs

Note the "%i" conversion token in addition to "%d". Both the %i and %d tokens are mandatory. Each time the current log file reaches maxFileSize before the current time period ends, it will be archived with an increasing index, starting at 0.

%i 转换 token 添加到您的模式中应该可以解决此问题:

<fileNamePattern>${EXPORT_LOG_HOME}/pvExport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

关于Logback:当文件增长超过 maxFileSize 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37259175/

相关文章:

java - 在 spring boot starter 中注册自定义日志附加程序

spring-boot - 在 Spring Boot 中定义 logback 关闭钩子(Hook)

java - Spring中HTTP请求后是否需要清除MDC

tomcat - spring-boot中tomcat访问日志的位置和名称如何配置?

Java 应用程序将日志记录相关的错误消息打印到标准输出

java.lang.NoSuchMethodError : ch. qos.logback.core.rolling.helper.FileNamePattern.getDateTokenConverter() 问题

logging - slf4j 日志语法

java - SLF4J 错误 : class loader have different class objects for the type

java - Jclouds 使用 SLF4j + log4j 而不是 SLF4J + logback 进行日志记录

java - ActiveMQ 客户端问题 : ClassNotFoundException org. apache.logging.log4j.spi.AbstractLoggerAdapter