tech.chakapoko.com
Home / Java / Logging(Slf4j,logback)

Slf4j+logbackの基本的な設定と使い方

Javaのログライブラリであるslf4j+logbackの使い方です。

全体の構成

今回はソースコードは次のように配置しています。

├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── Example.java
        └── resources
            └── logback.xml

pom.xml

pom.xmlにはslf4jとlogbackを使うための設定を記述しています。

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>example</name>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

</project>

logback.xml

logbackの設定は logback.xml に記述します

次の設定はINFOレベルで標準出力にログを出力します。

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

Example.java

以下はdebug,info,warn,errorの各レベルでログを出力するサンプルコードです。

package com.example;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Example {

    private static final Logger logger = LoggerFactory.getLogger(Example.class);

    public static void main(String[] args) {
        logger.debug("message debug");
        logger.info("message info");
        logger.warn("message warn");
        logger.error("message error");
    }

}

実行結果

ログレベルをinfoに設定しているので、INFO,WARN,ERRORのログだけが出力されていることを確認できます。

2020/03/12 12:53:11.604 [com.example.Example.main()] INFO  com.example.Example - message info
2020/03/12 12:53:11.605 [com.example.Example.main()] WARN  com.example.Example - message warn
2020/03/12 12:53:11.605 [com.example.Example.main()] ERROR com.example.Example - message error