Spring Boot ログ出力

Spring BootのWEB画面上でlog4j2を利用してみた

今回は、log4j2という、log4jの後継でパフォーマンスが大幅に改善されたライブラリを利用してコンソールとファイルにログ出力を行ってみたので、そのサンプルプログラムを共有する。

前提条件

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

Spring Bootの設定ファイルをapplication.propertiesからapplication.ymlに変更してみたこれまで、Spring Bootの設定ファイルとして「application.properties」を利用してきたが、YAML形式の設定...

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

今回のサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠のうち、「DemoInvocation.java」「log4j2.xml」「mybatis-config.xml」が新規で作成したプログラムで、他は変更したプログラムとなる。

build.gradleの内容は以下の通りで、log4j2とAOPを利用する設定を追加している。また、Spring Bootデフォルトのログ出力定義「Logback」を使わないよう、「spring-boot-starter-logging」を使わないような設定を追加している。

次に、MyBatisのSQLログをlog4j2を使って出力できるよう、「mybatis-config.xml」を追加している。なお、「mybatis-config.xml」を読み込める設定は「application.yml」に追加している。



さらに、「application.yml」の内容は以下の通り。「Logback」によるログ出力の定義を削除し、「mybatis-config.xml」を読み込む定義を追加している。

また、「log4j2.xml」の内容は以下の通り。アプリケーションのログを、コンソールとログファイルに出力するよう設定している。



さらに、Spring Boot起動後に、テスト用のログ出力をする処理を「DemoApplication.java」に追加している。

また、コントローラクラスのpublicメソッド実行時に開始・終了ログを出力する設定を、AOPを利用して「DemoInvocation.java」に追加している。

なお、AOPについては、以下の記事を参照のこと。

Spring BootでAOPを利用してみたSpringフレームワークの基本として、AOP(Aspect Oriented Programming)という概念がある。AOP...

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

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

Spring Bootアプリケーションを起動すると、以下のように、コンソールとログファイルに「DemoApplication.java」に追加したログが出力されることが確認できる。

<コンソール>
コンソールログ(起動時)

<ログファイル>
※log4j2.xmlの「LogFile」で指定したfileName「C:/work/logs/demo.log」にログが出力される。
ファイルログ(起動時)

次に、「http:// (ホスト名):(ポート番号)」とアクセスし、以下の画面動作を行う。
画面動作1

画面動作2

この場合のコンソールとログファイルの内容は以下の通りで、「DemoInvocation.java」で定義したログとSQLログが出力されることが確認できる。

<コンソール>
コンソールログ(画面動作時)

<ログファイル>
※log4j2.xmlの「LogFile」で指定したfileName「C:/work/logs/demo.log」にログが出力される。
ファイルログ(画面動作時)

要点まとめ

  • log4j2を利用するには、build.gradleにlog4j-apiとlog4j-coreのver2.x.xのライブラリを追加し、Spring BootデフォルトのLogbackを利用しない設定を追加する。
  • log4j2のログ出力定義は、log4j2.xmlで行う。
  • log4j2でSQLログを出力するには、mybatis-config.xmlでlogImplの設定値をLOG4J2に設定する。