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就是为了产生一个序号,防止日志文件覆盖。