logback日志问题分析技巧

Logback 可以通过一个内部的状态系统来报告它本身的状态信息。

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

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;

public class HelloWorld {

    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(HelloWorld.class);
        logger.debug("Hello world");

        // 打印内部的状态
        LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
        StatusPrinter.print(lc);
    }
}

当没有日志文件配置时,运行结果如下:

12:23:49.324 [main] DEBUG com.example.HelloWorld - Hello world
12:23:49,258 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:23:49,258 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:23:49,258 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:23:49,262 |-INFO in ch.qos.logback.classic.BasicConfigurator@2e5d6d97 - Setting up default configuration.

Logback 没有找到 logback-test.xmllogback.xml 配置文件,所以通过默认的配置策略-添加一个基本的 ConsoleAppender 来进行配置。Appender 类被看作为输出的目的地。Appenders 包括 console,files,Syslog,TCP Sockets,JMS 等等其它的日志输出目的地。用户可以根据自己的情况轻松的创建自己的 Appender。

如果发生了错误,logback 会自动在控制台打印自己内部的状态信息。

在上面的例子中,我们通过 StatusPrinter.print() 打印了 logback 自身的内部状态。logback 的内部状态对查找 logback 相关的问题非常的有用。

上边的方式是通过编码方式实现的,其实还有一种更方便的方式。那就是在logback.xml配置文件中添加


    
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        
    

    
        
    

如上边的配置项标签configuration后边增加了debug=true,如果配置文件的配置有问题,logback 会检测到这个错误并且在控制台打印它的内部状态。

你可能感兴趣的:(java)