logbackで日次ログローテーションする
logbackで日次ローテーションをする時のサンプル。
<configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- keep 30 days worth of history --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="FILE" /> </root> </configuration>
実はlogbackダウンロードした中に入っている。
logback-0.9.29/logback-examples/src/main/java/chapters/appenders/conf/logback-RollingTimeBased.xml
他にもサイズローテなどのサンプルが入っているので開いてみると幸せになれる。
いくつか設定方法を紹介。(公式にも掲載されている)
%d{}のフォーマットを書き換えることで、ローテーションタイミングが決まる。
フォーマットはjava.text.SimpleDateFormat参照。
- 日次ローテ
%dは"2006-11-24"形式。
- 月次ローテ
例えば、"%d{yyyy/MM}/logFile.log"とすると、月次ディレクトリが作られる。
# 2011/08/logFile.log
- 週次ローテ
localeに依存する。
- 毎時ローテ
- 毎分ローテ!
また、ログファイルをアーカイブする際にzipさせることも可能。
※ただし注意事項があるようなので公式説明をよく読まれたし。
- GZIPで圧縮する
ファイル名の最後に ".gz" もしくは ".zip"をつけるだけ。