服務器要記錄所有的日志,這些日志輸入到一個文件中太大了,就需要按大小和時間還分割,比如每小時產生一個文件或當文件大小大於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就是為了產生一個序號,防止日志文件覆蓋。

