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/mercury/" /> </springProfile> <!--production環境用設定 --> <springProfile name="production"> <property name="logFilePath" value="/var/log/mercury/" /> </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/mercury/" /> </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> |
高妻智一
最新記事 by 高妻智一 (全て見る)
- Reactのルーティングにreact-router-domとreact-router-reduxを導入する方法 - 2018-04-18
- Reactだけで作ったアプリにReduxを導入して気づいた利点 - 2018-04-15
- サーバサイドエンジニアがReactを始めるための最初の一歩 - 2018-04-14
コメントを残す