開発環境、結合、本番などログの場所が異なる場合、あと当然だけどログレベルが異なるだろうから、環境毎に切り替える方法をしらべた。
基本的にはこちらの写経だけど、当サイトが無くならないとも限らないので引用ベースで必要な情報はこちらに転記しておく
環境はSTS(Spring-Tool-Suite4上で確認)
SpringBoot自身は既にlogbackの参照があるらしくlogback.xml書けばいいらしいが、環境毎に変える場合はjaninoというライブラリが必要になるらしい。なのでpom.xmlに次を追加する。
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
</dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
</dependency>
logbackの設定であるlogback.xmlはresourcesの下に配置すればいいみたい。このlogback.xmlの設定で、環境変数によって切り替えるよう設定する。下記は、spring.profiles.activeという環境変数が存在したら、<then>のログバックの設定、しなかったら<else>のログバックの設定となる。ちなみに環境はlocal=ローカル環境、prd=本番環境
下記の設定はわざと先のエントリの値からは間引いている。ここで書きたいのは環境毎の出力先を切り替える方法であるため、それ以外の部分は間引いている
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<if condition='isDefined("spring.profiles.active")'>
<then>
<include resource="logback/${spring.profiles.active}.xml"/>
</then>
<else>
<include resource="logback/prd.xml"/>
</else>
</if>
</configuration>
設定を見ると、環境毎の設定ファイルはlogbackディレクトリに作ればよい。STS上では次のような感じになる。設定については先のエントリを参照するか、ご自分の設定をしてください。
その上でSTSの起動時のVMオプションに以下のように環境変数を追加
-Dspring.profiles.active=local
これで実行する。