Slf4J日志

Slf4J

slf4j是一个日志标准。

slf4j-simple、logback都是slf4j的具体实现,log4j并不直接实现slf4j,但是有专门的一层桥接slf4j-log4j12来实现slf4j。

关键代码是:

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

依赖

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>

引入依赖后并不能直接使用slf4j,需要引入一个实现

logback

springboot的默认方式

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.10</version>
    <scope>test</scope>
</dependency>
slf4j-simple
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.36</version>
    <scope>test</scope>
</dependency>
log4j2
<!--核心包-->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.17.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.1</version>
</dependency>

<!--实现slf4j-->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.17.1</version>
</dependency>

测试代码

Logger logger= LoggerFactory.getLogger("JUnit5AppTest");
logger.error("123");

logback

日志级别

日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出

github

https://github.com/qos-ch/logback

配置文件

resources目录下,官方推荐配置文件名:logback-spring.xml

配置详解

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <appender name="STDOUT"
              class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned by default the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

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

configuration

scan
scan="true"

当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true

scanPeriod
scanPeriod="10 seconds"

设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

debug
debug="true"

当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

timestamp

<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss" timeReference="contextBirth"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <!-- use the previously created timestamp to create a uniquely
         named log file -->
    <file>log-${bySecond}.txt</file>
    <encoder>
        <pattern>%logger{35} - %msg%n</pattern>
    </encoder>
</appender>
key

键名,作为变量名供后续配置元素使用

datePattern

日期格式

timeReference

默认使用当前时间,设置为contextBirth表示使用程序运行的时间

appender

定义日志编写事件

encoder

编码器,最终负责输出日志事件

pattern

负责控制输出日志的格式

posted @ 2022-11-03 08:47  Bin_x  阅读(44)  评论(0编辑  收藏  举报