JavaのWebアプリケーション開発フレームワークによる、Webサイト開発の顛末記です。

EclipseのMavenを使った、Spring-MVC、Thymeleaf、MyBatis 等のプログラミングテクニックを、
備忘録的に記録しています。実際に動くソースコードを多用して説明していますので、
これからEclipseや、Spring-MVCを始めたいと思っている人にとって、少しでも参考になれば幸いです。
■Spring Boot の小径 第4歩 Spring Boot 匍匐前進
4-4)ロギング
Spring Bootの基本的なところはだいたい理解できたので、
いよいよ MybatisによるDB連携に突入しようかなぁ。
と思ったのですが、ちょっと気が変わりました。
それも悪くはないのですが、その前にロギング手段をきちんと確立しておこうと思います。

■SpringMVC の小径 ちょっと寄り道 ロギングの小径で、
Log4j2 によるログクラスの実装と、AOPによるロギングの魔術をご紹介しましたが、
Spring Boot ではこのあたりをどう扱うか、きちんと実装しておかないと後々苦労することになるので、
Mybatisはも少し後の楽しみにとっておいて、ログの実装について説明したいと思います。

とか、もったい付けてしまいましたが、
実のところは、■SpringMVC の小径 ちょっと寄り道 ロギングの小径 で作ったログクラスを
丸ごと、そのまま使います。
src/main/java/jp/dip/arimodoki/common/MyLog4J.java
src/main/java/jp/dip/arimodoki/common/LogAspect.java
の二つは、パッケージ階層もまったく変わらないので、コピー&ペーストしただけです。
以前のLog4j2設定ファイル:WebContent/WEB-INF/classes/log4j2.xml
については、中身の変更はありませんが、配置場所だけ src/main/resources/log4j2.xml に変更されています。

ただ、実際に動くまでに少しはまった部分があるので、記録しておきます。
まず、Spring Boot のログ実装は、デフォルトでLogbackが使用されているそうです。
何も考えないで、Log4j2 のプラグインをbuild.gradleに設定しても、
Logbackの方が優先して動いてしまうようで、期待したログ出力ができませんでした。
Logbackから、Log4j2 に切り替える解決策としては、
build.gradleのスクリプトを調整することでうまく Log4j2のログを出すことができました。
今回修正した、ビルドスクリプトを載せておきますので、参考にしてください。
build.gradle

ソースの中に直接コメントを入れてありますので、参考にしてください。
上半分ぐらいは、最初のプロジェクト作成時のまま変わっていません。
中央あたりの、dependencies ブロックに苦労した後が見て取れると思います。
簡単に説明しておくと、Sprong Boot の標準的なライブラリは、だいたいほとんど
Logbackライブラリの依存関係を持っているようなので、[ ] でまとめて定義して、
exclude moduleで、依存をはずしたいモジュールを記述すれば思い通りに行くようです。
で、あとは自分で使いたいLog4j2 のライブラリを追加すれば問題解決です。

ここでは、Log4J2の設定に、XMLファイルを使っており、
Spring Boot の理念(?)である、XML の排除という点からは若干外れてしまいますが、
これぐらいは、まぁ良しとしましょう。
どうしても、XMLが嫌な人は、src/main/resources/application.yml とかいうファイルに、
大昔の、log4j.properties ファイルみたいな記述で行けるらしいので、
どうぞ、やってみてください。