Spring Boot ログ出力

log4j2のファイルを一定時間毎にローテーションしてみた

今回は、log4j2の設定を、ymlファイル・xmlファイルそれぞれについて、一定時間毎にローテーションするように設定変更してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

log4j2のファイルにymlを利用してみた前回は、log4j2のファイルにxmlファイルを利用していたが、今回はlog4j2のファイルにymlを利用してみたので、そのサンプルプロ...

サンプルプログラムの内容

log4j2.ymlを利用した場合の、今回のサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成_yml
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムとなる。

今回変更した「log4j2.yml」の内容は以下の通りで、RollingFileタグ・TimeBasedTriggeringPolicyタグを利用して、1分経過毎にログローテーションする設定になっていることが確認できる。



また、log4j2.xmlを利用した場合の、今回のサンプルプログラムの構成は以下の通り。
log4j2.xml

今回変更した「log4j2.xml」の内容は以下の通りで、「log4j2.yml」と同等の内容が設定されている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-log4j2-time-rotate/demo



サンプルプログラムの実行結果

「log4j2.yml」「log4j2.xml」どちらの場合も、以下のような実行結果となる。
Spring Bootアプリケーションを起動し、以下の画面操作を行うものとする。

1) Spring Bootアプリケーションを起動し、一定時間後に「http:// (ホスト名):(ポート番号)」とアクセスし、さらに一定時間後に、「検索」ボタンを押下
実行結果_画面_1

2) 一定時間後に、「次へ」リンクを押下
実行結果_画面_2

3) 「次へ」リンク押下後は以下の画面に遷移
実行結果_画面_3

この場合の、ログ出力先「C:\work\logs」フォルダ内は以下の通りで、出力中のログ「demo.log」とローテーションされたログ「demo_(yyyymmddhhmm).log.gz」が存在することが確認できる。
log_folder

また、ログファイルの内容はそれぞれ以下の通りとなり、ログ出力時刻を確認すると、「demo_202002080950.log」⇒「demo_202002080951.log」⇒「demo_202002080952.log」⇒「demo.log」 の順にログ出力されていることが確認できる。

<demo_202002080950.logの内容>
demo_202002080950_log

<demo_202002080951.logの内容>
demo_202002080951_log

<demo_202002080952.logの内容>
demo_202002080952_log

<demo.logの内容>
demo_log

要点まとめ

  • 指定したファイルサイズ毎にログローテーションするには、log4j2ログ定義を行う際に、RollingFileタグ・TimeBasedTriggeringPolicyタグを利用すればよい。