Spring Logging
インターフェースと実装が別れている
slf4j: インターフェース
logback: 実装
spring-starter-webにはlogbackがデフォルトで依存されている
console出力, ファイル出力は公式でappenderが作ってある
spring-boot/base.xml at main · spring-projects/spring-boot
logback-spring.xml を書けば良い
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<pattern>...</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>ログのJSON化
LogstashのLogback JSON encoderで、Logbackで出力するログをJSONエンコードする - CLOVER🍀
2つある
logback-contrib/jackson
こっちを使用
ch.qos.logback.contrib : logback-jackson - maven + code for add to pom.xml | JarCasting
メンテナンスされてない & スター少ない & StructuredArgumentsが使えない
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
<timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSXXX</timestampFormat>
<includeContextName>false</includeContextName>
<appendLineSeparator>true</appendLineSeparator>
</layout>
<charset>UTF-8</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>logstach-logback-encoder
メンテナンスされている & スター多い
GitHub - logstash/logstash-logback-encoder: Logback JSON encoder and appenders
appendEntries が使えるので独自のフィールドをJSONログに持たせる事ができる
application.yamlの値を使う
<springProperty name="VAR_NAME" resource="yml_path"/> なるものがあるらしい
${VAR_NAME} で参照出来る
spring で logback を使う際に application.yml の値を使う - nise_nabeの日記
Spring Profile
環境ごとに挙動を分けたいときにつかう
デフォルトはデフォルトプロファイル(dev とかではない)
Springのプロファイル機能、そしてSpring Bootのapplication.properties - Qiita