😸

SLF4J + logback + Lombokを導入してみる

2024/05/27に公開

SLF4J + logback + Lombokを導入

「Lombok を使用すると、@Slf4j のアノテーションを付けるだけで簡単にログを出力」できるようになるらしい
「logback は logback-classic を build.gradle で指定すると、slf4j-api と logback-core を自動的に読み込む」らしい

ログの歴史

下記がとても参考になった。(というかほぼパクリ)
https://www.aruse.net/entry/2022/07/09/220510#SLF4J-とは

導入&事前準備

build.gradle
  // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
  testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'

logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- コンソールにログを出力する設定 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date %level [%thread] %logger %msg%n</pattern>
        </encoder>
    </appender>

    <!-- INFOレベル以上のログを出力-->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

ログ出力してみる

log_test
package jp.example;

import lombok.extern.slf4j.Slf4j;

// lombokを入れている場合、「Logger」クラスのインスタンスを作る必要がない
@Slf4j
public class log_test {

  public static void main(String[] args) {
    // TODO 自動生成されたメソッド・スタブ
    log.trace("traceログを出力しました");
    log.debug("debugログを出力しました");
    log.info("infoログを出力しました");
    log.warn("warnログを出力しました");
    log.error("errorログを出力しました");
  }

}

実行結果

→info以上を出力する設定なのでOK

2023-11-02 04:25:09,980 INFO [main] jp.example.log_test infoログを出力しました
2023-11-02 04:25:09,985 WARN [main] jp.example.log_test warnログを出力しました
2023-11-02 04:25:09,986 ERROR [main] jp.example.log_test errorログを出力しました

Discussion