logback 按时间和大小生成日志不生效的问题

服务器要记录所有的日志,这些日志输入到一个文件中太大了,就需要按大小和时间还分割,比如每小时产生一个文件或当文件大小大于200MB的时候生成一个文件。

第一版这样版本,但是服务器启动之后没有生成日志文件:

<appender name="CONSOLE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/consolelogs/console.log</file>
        <append>true</append>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${log.home}/consolelogs/console.%d{yyyy-MM-dd_HH}.log
            </fileNamePattern>
            <maxHistory>72</maxHistory>
            <maxFileSize>200MB</maxFileSize>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss} %-5level [%thread][%file:%line] : %msg%n
            </pattern>
        </encoder>
    </appender>

这个配置原来是参考 ch.qos.logback.core.rolling.TimeBasedRollingPolicy 这个按时间滚动方式配置的。

之所以没有生效,是因为一个结节没有配置上。

<appender name="CONSOLE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/consolelogs/console.log</file>
        <append>true</append>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${log.home}/consolelogs/console.%d{yyyy-MM-dd_HH}.%i.log   //这里面的%i不能少
            </fileNamePattern>
            <maxHistory>72</maxHistory>
            <maxFileSize>200MB</maxFileSize>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss} %-5level [%thread][%file:%line] : %msg%n
            </pattern>
        </encoder>
    </appender>

上面在时间配置之后,有一个%i,这个绝对不能少。要不然在同一个小内产生多个日志文件就没办法区分了,这个i就是为了产生一个序号,防止日志文件覆盖。

原文地址:https://www.cnblogs.com/wgslucky/p/10071791.html