Logbackは、Spring Bootフレームワークの
デフォルトのロギングフレームワークです。
うまく使うことで、ログ出力をレベルごとに詳細にしてくれるので
身につけておくべきスキルです。
ここでは、出力例とサンプルコードのみを紹介します。
詳細説明については、Log4j2に似ているところが多いため、
気になる方は、
こちらをご覧ください。
ログのレベル一覧
Level | 使用用途 | 使用例 |
---|---|---|
ERROR | エラー発生時 | エラー発生全般で使用 |
WARN | メインプログラムではないエラー | バックアップしていたファイルの削除失敗時など |
INFO | 正常動作のログ(進捗状況など) | メソッドの実行始めと終わりなど |
DEBUG | 開発時に使用する | 発行するSQL文の確認、変数の確認など |
TRACE | 最も詳細なログ | あまり使わないかな。。1 |
環境と必要ファイル
- /
- src
- main
- java
- メインプログラムのJavaファイル
- resources
- logback.xml(propertiesやymlでも可)
- java
- main
- pom.xml
- src
サンプルコードと出力例
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>LogbackSample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>LogbackSample</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
※Eclipseにてプロジェクトを立ち上げ、何も変更していないpomファイルです。
LogbackはSpring Bootでデフォルトで備わっているので、特に追加することはありません。
package com.example.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LogbackSampleApplication {
public static void main(String[] args) {
SpringApplication.run(LogbackSampleApplication.class, args);
Logger logger = LoggerFactory.getLogger(LogbackSampleApplication.class);
logger.trace("トレーーーーーーーーース!!!!!");
logger.debug("デバーーーーーーーーーック!!!!!");
logger.info("インフォーーーーーーーー!!!!!");
logger.warn("ワーーーーーーーーーーーーン!!!");
logger.error("エラーーーーーーーーー!!!!!");
}
}
コンソール出力の例
logback.xmlなしの場合
出力例
logbackはデフォルト設定で、レベルがINFOなので、
INFOレベル以上のログしか出力されていません。
logback.xmlありの場合
xmlファイル
<configuration>
<!-- ルートロガーの設定 -->
<root level="TRACE">
<appender-ref ref="CONSOLE" />
</root>
<!-- コンソールへのログ出力設定 -->
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %highlight(%p) %logger{36} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
出力例
ファイル出力例
xmlファイル
<configuration>
<!-- ログディレクトリの指定 -->
<property name="logDirectory" value="logs" />
<!-- 1日ごとに新しいログファイルを生成 -->
<appender name="dailyRollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- ログファイルのパターン -->
<fileNamePattern>${logDirectory}/logback%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %p %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="dailyRollingFile" />
</root>
</configuration>
出力例と出力先
18:20:38 [restartedMain] TRACE c.e.demo.LogbackSampleApplication - トレーーーーーーーーース!!!!!
18:20:38 [restartedMain] DEBUG c.e.demo.LogbackSampleApplication - デバーーーーーーーーーック!!!!!
18:20:38 [restartedMain] INFO c.e.demo.LogbackSampleApplication - インフォーーーーーーーー!!!!!
18:20:38 [restartedMain] WARN c.e.demo.LogbackSampleApplication - ワーーーーーーーーーーーーン!!!
18:20:38 [restartedMain] ERROR c.e.demo.LogbackSampleApplication - エラーーーーーーーーー!!!!!
- /
- src
- main
- java
- …
- resources
- logback.xml(propertiesやymlでも可)
- java
- main
- pom.xml
- logs
- logback20240116.log
- src
詳細説明が欲しい方は、Log4j2の記事でしています。
似ているところが多く、Log4j2と合わせて理解できるので
ぜひご覧ください。
- TRACEレベルにログを出力すると、たくさんのログが出力されてしまい見にくくなる。 ↩︎
参考サイト