典型的logback附加器配置为
<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为该小时创建一个空文件。
发布于 2018-11-22 21:54:53
我也遇到过同样的问题,我猜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" >https://stackoverflow.com/questions/32344977
复制相似问题