【技術メモ】簡単3-Stepで、LogBack+SLF4Jでログを出力する
LogBack+SLF4Jでログを出力する
概要
Javaで、LogBackとSLF4Jで、ログを出すまでの手順
ステップ
詳細
Mavenの依存性を追加
logback-classicを追加すれば、ほぼほぼ入る。あとslf4j-simple
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>
logback.xmlを用意
- appender で出力先を設定
- logger で出力対象のロガーを指定(対象パッケージを指定)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE logback> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/usr/local/var/log/myapp/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/usr/local/var/log/myapp/app.log.%d{yyyyMMdd}</fileNamePattern> <maxHistory>14</maxHistory> </rollingPolicy> <encoder> <!-- %Xだけにすると「traceId=xxx,spanId=xxx,spanExportable=false,X-Span-Export=false,X-B3-SpanId=xxx,X-B3-TraceId=xxx」が出る --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}^%-5level^%logger{0}:%L^%X{traceId}^%X{spanId}^%msg%n</pattern> </encoder> </appender> <logger name="xyz.chamc" level="info" additivity="false"> <appender-ref ref="FILE" /> </logger> <root level="info"> <appender-ref ref="STDOUT" /> </root> </configuration>
Loggerを宣言して、ログ出力
- org.slf4j.Loggerをstatic finalで宣言
- org.slf4j.LoggerFactoryで引数に自分のクラスを指定
- ここは一意に名前がつけばいいので、自クラス名が手っ取り早い
- logger.xxx()でログ出力を実装
package xyz.chamc.example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @SpringBootApplication @RestController @RequestMapping("/api") public class TheController { private static Logger logger = LoggerFactory.getLogger(TheController.class); @RequestMapping("/call") public String call() { logger.info("START: call()."); logger.info("END: call()."); return "You call API !"; } }
参考リンク
SpringBootでいつも出るWARNの対処法