我希望在经过一分钟或超过1MB大小后滚动日志。但是使用以下配置,仅创建第一个记录大小的日志。让我们说:
myapp.2012-11-21_15-07.log(大小:1026KB - 1MB)
myapp.log(大小:89KB)
让我们说时间过去了(但我们仍然在那一分钟内)并且日志被填满(超过1MB),它不会创建另一个文件。只有在超过时间时才会创建另一个文件,而不考虑大小 这是一个错误还是预期的功能?如何使用logback配置?我需要自定义实现吗?
当我想要在经过一分钟或超过1MB大小后滚动日志时,我在the current manual中读到的内容,我将执行以下配置:
<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,我无法设置滚动策略,因为我找不到任何有效的文档/手册。也许有人也可以为那些需要使用遗留依赖项的人指出一些旧的手册。
亲切的问候,
霸
答案 0 :(得分:1)
您必须将滚动策略设置为使用SizeAndTimeBasedFNATP
以下是带有示例的文档
http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP
你错过了%i:
<fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
除“%d”外,请注意“%i”转换令牌。每当当前日志文件在当前时间段结束之前达到maxFileSize时,它将以增加的索引存档,从0开始。