这是我的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>
答案 0 :(得分:1)
如果你仍然面临这个问题,我在这里从loback网站收集了解决方案:http://jira.qos.ch/browse/LOGBACK-74 &#34;鉴于在某些平台上计算文件大小是一个相对昂贵的操作,在SizeBasedTriggeringPolicy类的isTriggeringEvent方法中,我们每16次调用只检查一次文件大小。对于长期存在的应用程序,这不是问题,因为它最终会对isTriggeringEvent()进行16次调用。但是,对于在关闭之前进行少量日志记录调用的短期应用程序,isTriggeringEvent()可能永远不会被调用16次&#34;
在这些行上,为了测试我的短期应用程序,我将我的线程设置为休眠一段时间,这导致日志文件以设置的大小进行翻转。 记录语句时的我的代码:
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),如果大小限制超过,则翻转。我希望这也可以解决你的问题。