Spring Bootでのロガー設定方法
Spring Bootではspring-boot-starter-webを使用するとLogbackがデフォルトで使えるようになります。
Logbackの設定は慣れると簡単にロガーの設定ができます。Spring Bootを使ってるならこれで事足りると思います。
設定方法
logback-spring.xmlはapplication.propertiesがあるresources配下に作成します。中身はこんな感じです。上から順番に説明して行きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- デフォルト設定読み込み --> <include resource="org/springframework/boot/logging/logback/base.xml" /> <property name="logFileName" value="app" /> <!--ローカル環境用設定 --> <springProfile name="default"> <property name="logFilePath" value="./" /> </springProfile> <!--develop環境用設定 --> <springProfile name="develop"> <property name="logFilePath" value="/var/log/velop/" /> </springProfile> <!--production環境用設定 --> <springProfile name="production"> <property name="logFilePath" value="/var/log/production/" /> </springProfile> <!-- コンソール出力 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <target>System.out</target> <encoder> <charset>UTF-8</charset> <pattern>%d{yyyy/MM/dd HH:mm:ss} %-5level [%thread] - %msg%n</pattern> </encoder> </appender> <!-- アプリケーションログのファイル書き出し --> <appender name="APPLIATION_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--ファイル名 --> <file>${logFilePath}${logFileName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logFilePath}${logFileName}-%d{yyyy-MM-dd}.log.zip</fileNamePattern> <maxHistory>3</maxHistory> </rollingPolicy> <encoder> <charset>UTF-8</charset> <pattern>%d{yyyy/MM/dd HH:mm:ss} %-5level [%thread] - %msg%n</pattern> </encoder> </appender> <!--rootログレベルと使用出力ルール --> <root level="INFO"> <appender-ref ref="APPLIATION_LOG" /> </root> </configuration> |
デフォルト設定
インクルードしているのはコンソールとファイル用のアペンダーになります。詳細はこちら。
1 2 |
<!-- デフォルト設定読み込み --> <include resource="org/springframework/boot/logging/logback/base.xml" /> |
環境別変数の設定
環境別に変数を定義することができます。springProfileは起動時に指定しているapplication-develop.propertiesやapplication-production.propertiesの環境名を指定できます。
1 2 3 4 5 6 7 8 9 |
<!--ローカル環境用設定 --> <springProfile name="default"> <property name="logFilePath" value="./" /> </springProfile> <!--develop環境用設定 --> <springProfile name="develop"> <property name="logFilePath" value="/var/log/develop/" /> </springProfile> |
コンソールアペンダー
コンソールにログを出力するときのフォーマットを設定できます。
1 2 3 4 5 6 7 8 |
<!-- コンソール出力 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <target>System.out</target> <encoder> <charset>UTF-8</charset> <pattern>%d{yyyy/MM/dd HH:mm:ss} %-5level [%thread] - %msg%n</pattern> </encoder> </appender> |
ファイル書き出し
ファイル書き出しのフォーマットとローテションの設定ができます。ローテーションは日毎にzipで圧縮もできるし、保存期間も簡単に設定できるので便利です。下記では保存期間を3日で設定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!-- アプリケーションログのファイル書き出し --> <appender name="APPLIATION_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--ファイル名 --> <file>${logFilePath}${logFileName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logFilePath}${logFileName}-%d{yyyy-MM-dd}.log.zip</fileNamePattern> <maxHistory>3</maxHistory> </rollingPolicy> <encoder> <charset>UTF-8</charset> <pattern>%d{yyyy/MM/dd HH:mm:ss} %-5level [%thread] - %msg%n</pattern> </encoder> </appender> |
ログレベル設定
最後に出力するログレベルと使用するアペンダーを指定すれば完了です。
1 2 3 4 |
<!--rootログレベルと使用出力ルール --> <root level="INFO"> <appender-ref ref="APPLIATION_LOG" /> </root> |
おすすめ書籍
Springの概要からインストール方法、各コア機能(Security, Sessionなど)の解説が体系的にまとめられています。2018年に出版されたばかりなので情報も新しいです。これからSpring Bootでアプリケーション開発をしたい方の最初に読む一冊としておすすめします。対象は初心者だけでなく上級者まで幅広く学べるので是非読んでみてください!
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
- FlutterからCloud Firestoreのデータを追加、更新、取得、削除する方法 - 2019-05-23
コメントを残す