首页 > 其他分享 >slf4j、log4j2及logback使用

slf4j、log4j2及logback使用

时间:2022-10-02 21:47:15浏览次数:50  
标签:console logback slf4j main log4j2 log4j

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>依赖如下:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.0</version>
</dependency>

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

2、slf4j与log4j2使用

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

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.18.0</version>
</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.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.0</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.4.0</version>
</dependency>

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
    <logger name="org.springframework" level="ERROR" />
    <logger name="com.opensymphony" level="ERROR" />
    <logger name="org.quartz" level="ERROR" />
    <logger name="org.apache" level="ERROR" />
    <logger name="net.sf" level="ERROR" />
    <!-- 输出到控制台和文件,可定义更多的 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

标签:console,logback,slf4j,main,log4j2,log4j
From: https://www.cnblogs.com/happyfuns/p/16749527.html

相关文章

  • slf4j、log4j2及logback使用
    slf4j、log4j2及logback使用1、问题来源之前看过关于slf4j、log4j2及logback的介绍,slf4j是门面,log4j2及logback是具体实现,仅使用slf4j门面是无法输出日志的。本文采用jd......
  • 框架——日志框架——logback——初篇
    1、知识体系Logback的知识体系分为三部分。 第一部分,基础,模块,搭建环境,流程,配置文件。第二部分,核心对象,logger,appender,encoder与Layout,filter。第三部分,杂项,MDC等。......
  • 框架——日志框架——logback——logback.xml
    为了便于使用,留存一份logback的配置文件。首先,需要在resources下创建logback文件夹,并存放以下三个文件,这是我的个人习惯,也可以都写在logback.xml中logback.prop......
  • Log4j2
    参见log4j官网:https://logging.apache.org/log4j/2.x注意:log4j2官网展现的是最新版的内容。因此有的内容变更参见ChangeLog:https://logging.apache.org/log4j/2.x/change......
  • LogBack
    logback的基本使用<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--配置集中管理属性--><propertyname="pattern"value="[%-5level]%d{yyyy-MM......
  • 3.门面Slf4j+logback
    1.导入pomyil<!--slf4jcore使用slf4j必須添加--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.27</vers......
  • 2.门面Slf4j+Simple简单实现
    1.导入pom文件<!--slf4jcore使用slf4j必須添加--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.27</ver......
  • 4.门面Slf4j+slf4j-log4j12+log4j
    1.导入pom依赖<!--slf4jcore使用slf4j必須添加--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.27</ver......
  • 5.门面Slf4j+log4j2
    1.导入pom依赖<!--使用slf4j作为日志的门面,使用log4j2来记录日志--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><ve......
  • Spring Boot项目——logback 动态获取yml文件配置参数
    背景在项目中,日志需要根据不同项目环境进行处理,比如记录日志级别,日志留存时间等。我们需要在不同的yml文件中设置变量,logback文件中动态获取参数,进行日志配置。方法......