1. 程式人生 > >The logback manual #01# Introduction

The logback manual #01# Introduction

依賴包如下pom.xml:

<?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>org.sample.logback</groupId> <artifactId>test-logback</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--
-source 1.5 中不支援 try-with-resources--> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies> </project>

例子程式:

package org.sample.logback;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {

    @Test
    public void testLogback() {
        Logger logger = LoggerFactory.getLogger(LogbackTest.class);
        logger.debug(logger.getName()); // 這個logger(記錄器)名字叫org.sample.logback.LogbackTest
        logger.debug("Hello world."); // 一個級別為DEBUG的logging(記錄)語句,並帶有訊息“Hello world”。
        // 不論專案大小,logging語句並不會有什麼改變(總是像上面那樣簡單),只是配置不同!

        /*
        logback的預設配置策略:當未找到預設配置檔案時,
        logback將把ConsoleAppender新增到root logger(根記錄器).
        PS. appender是一種可以被視為“輸出目的地”的類。所以上
        面這句話言下之意即:console將被作為root logger的輸出目
        的地之一。
         */

        // 列印logback的內部狀態,這依賴於具體的logback類,而不是slf4j API
        // 當然,在出現errors時,logback會自動列印內部狀態而無需開啟
        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
        StatusPrinter.print(lc); // 啟用“列印logback內部狀態”的模式,並不是只打印一次。這在診斷logback相關問題的時候非常有用!
    }
}
/*
output=
21:52:55.068 [main] DEBUG org.sample.logback.LogbackTest - org.sample.logback.LogbackTest
21:52:55.068 [main] DEBUG org.sample.logback.LogbackTest - Hello world.
21:52:55,037 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
21:52:55,037 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
21:52:55,037 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
21:52:55,037 |-INFO in [email protected] - Setting up default configuration.
 */