Logging 从TimeBasedRollingPolicy移动到SizeAndTimeBasedRollingPolicy,每mignight或最大大小滚动一次
当我使用下面的appender时Logging 从TimeBasedRollingPolicy移动到SizeAndTimeBasedRollingPolicy,每mignight或最大大小滚动一次,logging,logback,rollingfileappender,Logging,Logback,Rollingfileappender,当我使用下面的appender时 <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>D:/logs/log.txt</file> <append>true</append> <encoder class="ch.qos.logback.classic.en
<appender name="APPLICATION"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>D:/logs/log.txt</file>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%p %d [%t] %L - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
但我得到:
未为名为的RollingFileAppender设置TriggeringPolicy
应用
这使我认为没有这样的触发策略,因此我将触发策略还原为SizeAndTimeBasedFNATP
,并将滚动策略从TimeBasedRollingPolicy
更改为SizeAndTimeBasedRollingPolicy
我的新滚动策略现在变为:
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
D:/logs/log.%D{yyyy-MM-dd}.%i.txt
10MB
30
但我得到:
触发策略尚未启动。RollingFileAppender将不会启动
我试图在每到午夜或在最大尺寸后实现翻车,以先到者为准。现在,我正在使用logback版本:
1.2.3
最终发现maxFileSize
必须在timebasedFileName和triggeringPolicy
之外,并且SizeAndTimeBasedRollingPolicy
不需要这样做。因此,根据时间和大小(以先到者为准)滚动的最终logback.xml变为:
%p%d[%t]%L-%m%n
D:/logs/log.txt
真的
%p%d[%t]%L-%m%n
D:/logs/log.%D{yyyy-MM-dd-HH}.%i.txt
5GB
30
20GB
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Send debug messages to System.out -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%p %d [%t] %L - %m%n</pattern>
</encoder>
</appender>
<appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>D:/logs/log.txt</file>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%p %d [%t] %L - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>D:/logs/log.%d{yyyy-MM-dd HH}.%i.txt</fileNamePattern>
<maxFileSize>5GB</maxFileSize>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
</appender>
<logger name="javaportreader" level="INFO" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<logger name="application" level="DEBUG" additivity="false">
<appender-ref ref="APPLICATION"/>
</logger>
<!-- By default, the level of the root level is set to DEBUG -->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
<root level="INFO">
<appender-ref ref="APPLICATION"/>
</root>
</configuration>