• slf4j、log4j2及logback使用


    slf4j、log4j2及logback使用

    1、问题来源

    之前看过关于slf4j、log4j2及logback的介绍,slf4j是门面,log4j2及logback是具体实现,仅使用slf4j门面是无法输出日志的。

    本文采用jdk11,测试代码Slf4jTest.java如下:

    import lombok.extern.slf4j.Slf4j;
    @Slf4j
    public class Slf4jTest {
        public static void main(String[] args) {
            log.info("info");
            log.debug("debug");
            log.error("error");
            log.warn("warn");
        }
    }
    

    @Slf4j需要依赖如下:

    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
        <version>1.18.24version>
    dependency>
    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-apiartifactId>
        <version>2.0.0version>
    dependency>
    

    运行程序,不出意外,程序报错SLF4J: No SLF4J providers were found.。原因为代码只有slf4j门面,没有相关实现。

    2、slf4j与log4j2使用

    (1)在maven依赖中引入slf4j-log4j12、及log4j-core包,如下图

    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-log4j12artifactId>
        <version>2.0.0version>
    dependency>
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-coreartifactId>
        <version>2.18.0version>
    dependency>
    

    运行代码,之前的错误消失,取而代之的是log4j:WARN No appenders could be found for logger (binghe.concurrent.Slf4jTest).错误,如下图。原因为log4j2需要配置文件。

    (2)在项目resources目录下新建log4j.properties文件,代码如下

    # Set root logger level to DEBUG and its only appender to console.
    log4j.rootLogger=DEBUG, console
    # console is set to be a ConsoleAppender.
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    # console uses PatternLayout.
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.Target = System.out
    log4j.appender.console.Threshold = DEBUG
    log4j.appender.console.layout.ConversionPattern=%-4r [%t]  %-5p %c %x - %m%n
    

    运行代码,程序正常输出:

    0    [main]  INFO  binghe.concurrent.Slf4jTest  - info
    1    [main]  DEBUG binghe.concurrent.Slf4jTest  - debug
    2    [main]  ERROR binghe.concurrent.Slf4jTest  - error
    2    [main]  WARN  binghe.concurrent.Slf4jTest  - warn
    

    3、slf4j与logback使用

    删除第2节中maven依赖引入的slf4j-log4j12、及log4j-core包。

    (1)在maven依赖中引入logback-classic、及logback-core

    <dependency>
        <groupId>ch.qos.logbackgroupId>
        <artifactId>logback-classicartifactId>
        <version>1.4.0version>
    dependency>
    <dependency>
        <groupId>ch.qos.logbackgroupId>
        <artifactId>logback-coreartifactId>
        <version>1.4.0version>
    dependency>
    

    (2)在项目resources目录下新建logback.xml文件

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

    运行代码,程序正常输出:

    2022-10-02 21:13:37.174 INFO  [main] info
    2022-10-02 21:13:37.181 DEBUG [main] debug
    2022-10-02 21:13:37.181 ERROR [main] error
    2022-10-02 21:13:37.181 WARN  [main] warn
    
  • 相关阅读:
    ETLCloud工具让美团数据管理更简单
    Element UI组件安装使用会了吗?
    【Java Web】Day 13 Filter & Listener & Ajax
    跨境电商做什么产品好?2022速卖通热销品类榜单来袭!
    基于STM32设计的智能水产养殖系统(华为云IOT)
    快速排序及优化
    Spacedrive:开源跨平台文件管理 | 开源日报 No.57
    一个java项目中,如何使用sse协议,构造一个chatgpt的流式对话接口
    CiscoCUCM安装初始化
    msql检索包含中文的记录
  • 原文地址:https://www.cnblogs.com/happyfuns/p/16749527.html