arcanum_jp’s blog

おっさんの日記

SpringBootで環境毎にログの出力先を切り替えるメモ

開発環境、結合、本番などログの場所が異なる場合、あと当然だけどログレベルが異なるだろうから、環境毎に切り替える方法をしらべた。

 

基本的にはこちらの写経だけど、当サイトが無くならないとも限らないので引用ベースで必要な情報はこちらに転記しておく

 

環境はSTS(Spring-Tool-Suite4上で確認)

 

qiita.com

 

SpringBoot自身は既にlogbackの参照があるらしくlogback.xml書けばいいらしいが、環境毎に変える場合はjaninoというライブラリが必要になるらしい。なのでpom.xmlに次を追加する。

 

<dependency>

    <groupId>org.codehaus.janino</groupId>

    <artifactId>janino</artifactId>

</dependency>

<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上では次のような感じになる。設定については先のエントリを参照するか、ご自分の設定をしてください。

 

f:id:arcanum_jp:20190124121902p:plain

 

その上でSTSの起動時のVMオプションに以下のように環境変数を追加

 

-Dspring.profiles.active=local

 

f:id:arcanum_jp:20190124122049p:plain

これで実行する。