Spring Boot ログ出力

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

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

前提条件

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

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

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

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

今回変更した「log4j2.yml」の内容は以下の通りで、RollingFileタグ・SizeBasedTriggeringPolicyタグを利用して、ファイルサイズ:2KB毎にログローテーションする設定になっていることが確認できる。



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

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

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

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

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

1) 「http:// (ホスト名):(ポート番号)」とアクセスし、「検索」ボタンを押下
実行結果_画面_1

2) 「次へ」リンクを押下
実行結果_画面_2

3) 下記画面に遷移
実行結果_画面_3

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

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

<demo_20200205_1.logの内容>
demo_20200205_1_log

<demo_20200205_2.logの内容>
demo_20200205_2_log

<demo.logの内容>
demo_log

要点まとめ

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