配置回溯TimeBasedRollingPolicy以特定方式滚动文件

时间:2016-09-19 09:59:06

标签: java logging logback

我正在尝试使用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
    • 更改其名称
    • 创建新的server.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文件。

0 个答案:

没有答案