gpt4 book ai didi

logback RollingFileAppender 定时滚动

转载 作者:行者123 更新时间:2023-12-05 06:43:40 25 4
gpt4 key购买 nike

典型的 logback appender 配置是

<appender name="NAME"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>FILEPATH.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>FILEPATH.%d{yyyy-MM-dd-HH}.log</fileNamePattern>
<maxHistory>24</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>

通常它对我来说效果很好。但是我发现当没有日志附加到记录器时,它不会按照指定的 rollingPolicy 拆分日志文件。

请告诉我如何将它配置为每小时拆分日志文件,即使几个小时没有日志记录。如果某个小时没有日志记录,我需要 logback 为那个小时创建一个空文件。

最佳答案

我遇到了同样的问题,我想默认情况下 logback 无法做到这一点。

我在 logback backlog 中发现了这个问题来处理这个问题:https://jira.qos.ch/browse/LOGBACK-554而且它仍然开放。

我现在所做的是基于它实现我自己的滚动附加策略:https://ronanquillevere.github.io/2015/08/04/rolling-log-15-min.html

您可以扩展 RollingFileAppender 类并覆盖翻转方法,如下所示:

public class CustomAppender<E> extends RollingFileAppender<E>
{
private static long start = System.currentTimeMillis();
private int rollOverTimeInMinutes = 60;

@Override
public void rollover()
{
long currentTime = System.currentTimeMillis();
int maxIntervalSinceLastLoggingInMillis = rollOverTimeInMinutes * 60 * 1000;

if ((currentTime - start) >= maxIntervalSinceLastLoggingInMillis)
{
super.rollover();
start = System.currentTimeMillis();
}
}
}

并且在 logback 文件 xml 配置上,您只需在 appender 属性上设置自定义策略:

<appender name="FILE" class="<your-package>.CustomAppender" >

关于logback RollingFileAppender 定时滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com