Slf4j 整合 Logback

Slf4j 整合 Logback

Sl4j 全称 Simple Logging Facade for Java
它不是具体的日志解决方案,只服务于各种各样的日志系统。Slf4J是一个用于日志系统的Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

Slf4J提供了统一的记录日志的接口,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统 (logback, log4j 等)

	<properties>
     	
        <slf4j-api.version>2.0.0slf4j-api.version>
        <logback-classic.version>1.4.0logback-classic.version>
    properties>
 	
   <dependency>
       <groupId>org.slf4jgroupId>
       <artifactId>slf4j-apiartifactId>
       <version>${slf4j-api.version}version>
   dependency>
   <dependency>
       <groupId>ch.qos.logbackgroupId>
       <artifactId>logback-classicartifactId>
       <version>${logback-classic.version}version>
   dependency>
   <dependency>
       <groupId>junitgroupId>
       <artifactId>junitartifactId>
       <version>4.13.2version>
       <scope>testscope>
   dependency>

Logback 会尝试默认加载根目录下 logback.xml 文件 (单元测试首先会尝试加载 logback-test.xml, 其次 logback.xml

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestBase {
    private static Logger logger = LoggerFactory.getLogger(TestBase.class);

    @Test
    public void testAction() {
    	// // trace logback 此处不会输出。除非日志Level设定为TRACE
        logger.trace("test trace level");
        logger.debug("test debug level");
        logger.info("test info level");
        logger.warn("test warn level");
        logger.error("test error level");
    }
}

如下,没有TRACE级别日志,默认级别是从DEBUG

11:12:01.189 [main] DEBUG pr.iceworld.fernando.basicdemo.TestBase - test debug level
11:12:01.193 [main] INFO pr.iceworld.fernando.basicdemo.TestBase - test info level
11:12:01.193 [main] WARN pr.iceworld.fernando.basicdemo.TestBase - test warn level
11:12:01.193 [main] ERROR pr.iceworld.fernando.basicdemo.TestBase - test error level

增加logback.xml默认配置文件


<configuration>
    <property name = "ENCODER_PATTERN" value = "%d{yyyy-MM-dd  HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n"/>
    
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        <target>System.errtarget>
        
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${ENCODER_PATTERN}pattern>
        encoder>
    appender>
    
    <root>
        <level value="TRACE" />
        <appender-ref ref="console">appender-ref>
    root>
configuration>

再次运行则会打印TRACE级别日志

2022-09-01  11:17:57.041 [main] TRACE pr.iceworld.fernando.basicdemo.TestBase - test trace level
2022-09-01  11:17:57.042 [main] DEBUG pr.iceworld.fernando.basicdemo.TestBase - test debug level
2022-09-01  11:17:57.042 [main] INFO  pr.iceworld.fernando.basicdemo.TestBase - test info level
2022-09-01  11:17:57.042 [main] WARN  pr.iceworld.fernando.basicdemo.TestBase - test warn level
2022-09-01  11:17:57.042 [main] ERROR pr.iceworld.fernando.basicdemo.TestBase - test error level

日志级别从低到高分别为:
TRACE < DEBUG < INFO < WARN < ERROR

你可能感兴趣的:(logback,log4j,java)