java - FixedWindowRollingPolicy 和 SizeBasedTriggeringPolicy 触发策略不适用于 logback 1.1.7

标签 java logback rollingfileappender

这是我的 logback 配置,即使超过 2MB(maxfileSize)后文件也没有被归档。我使用的是 1.1.7 版本的 logback。不确定到底是什么问题。

<configuration>
    <appender name="RFILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>../logs/esync.log</file>
        <encoder>
            <pattern>%d{MM-dd-yy HH:mm:ss} %-5level %mdc %logger{60}::%M:%line -
                %msg%n
            </pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>../logs/archive/esync.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>10</maxIndex>
        </rollingPolicy>


            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>2MB</maxFileSize>
</triggeringPolicy>

    </appender>

    <root level="${log.level:-INFO}">
        <appender-ref ref="RFILE" />
    </root>
</configuration>

最佳答案

如果您仍然面临这个问题,我在这里从 loback 站点收集了解决方案:http://jira.qos.ch/browse/LOGBACK-74 “鉴于在某些平台上计算文件大小是一项相对昂贵的操作,在 SizeBasedTriggeringPolicy 类的 isTriggeringEvent 方法中,我们每 16 次调用仅检查一次文件大小。对于长期存在的应用程序,这不是问题,因为它最终会进行 16 次调用到 isTriggeringEvent()。但是,对于在关闭之前进行少量日志记录调用的短期应用程序,isTriggeringEvent () 可能永远不会被调用 16 次"

在这些方面,为了测试我的短暂应用程序,我将我的线程设置为 hibernate 一段时间,这导致日志文件以设置的大小滚动。 记录语句时我的代码:

public class MyLoggingClass {

    private static final Logger logger = LoggerFactory.getLogger(MyLoggingClass.class);

    public void method1() {

        for(int i=0; i<50;i++) {
            logger.debug("This is Debug Message : " + i);
            logger.info("This is Info Message : " + i);
            try{
                Thread.sleep(1000);
            }catch(Exception e){}
        }
    }
}

这会创建完全符合设置的最大大小(即在我的情况下为 1KB)的日志文件,如果超过大小限制则滚动。我希望这也能解决您的问题。

关于java - FixedWindowRollingPolicy 和 SizeBasedTriggeringPolicy 触发策略不适用于 logback 1.1.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36688286/

相关文章:

java - jar 中找不到 Logback 属性资源

log4j - 需要一个通过属性配置 log4j RollingFileAppender 的工作示例

c# - Log4net - 删除任何超过 14 天的日志

log4net - 如何使用复合命名的滚动备份配置静态日志文件名

Drools 使用 logback 进行日志记录

java - 可写文件权限问题

java - 通用构造函数 (Class<T> clazz) 不支持 T,其中 T 是另一个泛型

java - 使用 Hibernate Criteria 时,类型 List 的表达式需要未经检查的转换以符合 List<Student>

gradle - 替换logback.xml文件目录

java - MediaPlayer "android "始终为空?