我正在尝试使用TimeBasedRollingPolicy
来实现某种滚动文件的方式,但我无法按照我的意图使其工作。
我当前的logback.xml
配置(logback版本1.1.3):
<configuration debug="true">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${com.sun.aas.instanceRoot}/logs/server.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${com.sun.aas.instanceRoot}/logs/server.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<MaxHistory>7</MaxHistory>
</rollingPolicy>
<encoder>
<Pattern>[%d] [%thread] [%-5level] [%logger{52}]%n %msg%n%n</Pattern>
</encoder>
</appender>
<root>
<level value="TRACE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
我希望记录器的行为方式:
/logs/server.log
文件,直到达到5MB文件大小或日期滚动/logs/server.log
文件达到5MB(或日期滚动)时
fileNamePattern
(例如logs/server.2016-09-19T10-58.0.log
)上述配置的行为方式:
/logs/server.log
文件,根本不会滚动文件。到目前为止我尝试了什么:
删除主文件属性<file>${com.sun.aas.instanceRoot}/logs/server.log</file>
仅使用TimeBasedRollingPolicy
SizeAndTimeBasedFNATP
,并将翻转周期设置为一分钟(将HH-mm
添加到fileNamePattern
)
这些解决方案似乎可以启用文件滚动,但遗憾的是导致/logs/server.log
文件被完全省略。
仅使用FixedWindowRollingPolicy
基于文件大小的SizeBasedTriggeringPolicy
(使用相同的fileNamePattern
)
它会使记录器无限期地附加到/logs/server.log
文件。