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