我想在一分钟过去或超过 1MB 大小后滚动日志。但是使用下面的配置,只创建第一个日志并考虑大小。让我们说:
myapp.2012-11-21_15-07.log(大小:1026KB - 1MB)
myapp.log(大小:89KB)
假设时间过去了(但我们仍然在那一分钟内)并且日志被填满(超过 1MB),它不会创建另一个文件。仅在超过时间时才创建另一个文件,而不考虑大小。
这是一个错误还是预期的功能?如何使用 logback 进行配置?我需要自定义实现吗?
正如我在当前手册中阅读的那样,当我希望在经过一分钟或超过 1MB 大小后滚动日志时,我将执行以下配置:
<configuration>
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/myapp.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
<maxHistory>90</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-5level %date{ISO8601} [%thread]: [%class: %method] %message%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %date{ISO8601} [%thread]: [%class: %method] %message%n</pattern>
</encoder>
</appender>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %date{ISO8601} [%thread]: [%class: %method] %message%n</pattern>
</encoder>
</appender>
<logger name="org.springframework.core">
<level value="all"/>
</logger>
<logger name="org.springframework.beans">
<level value="all"/>
</logger>
<logger name="org.springframework.context">
<level value="all"/>
</logger>
<logger name="org.springframework.web">
<level value="all"/>
</logger>
<root level="error,info,debug">
<appender-ref ref="file"/>
<!-- <appender-ref ref="console"/> -->
</root>
</configuration>
依赖项(我不包括使用它来获得 logback 功能的每个依赖项中的 commons-logging - 未在下面显示):
<!-- LOGGING -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.6</version>
</dependency>
<!--END LOGGING-->
一些附加信息:
我还尝试了 1.0.7 版本(虽然最后一个版本无法通过中央存储库获得 - 必须手动将其包含在本地 maven 存储库中),但同样发生了。
我的项目使用的是 0.9.11 版本的 logback,我无法设置滚动策略,因为我找不到任何有效的文档/手册。也许有人还可以为那些需要处理遗留依赖项的人指出一些旧手册。
亲切的问候,
暴君