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>
依赖如下:
org.projectlombok
lombok
1.18.24
org.slf4j
slf4j-api
2.0.0
运行程序,不出意外,程序报错 SLF4J: No SLF4J providers were found.
。原因为代码只有slf4j门面,没有相关实现。
2、slf4j与log4j2使用
(1)在maven依赖中引入 slf4j-log4j12
、及 log4j-core
包,如下图
org.slf4j
slf4j-log4j12
2.0.0
org.apache.logging.log4j
log4j-core
2.18.0
运行代码,之前的错误消失,取而代之的是 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
包
ch.qos.logback
logback-classic
1.4.0
ch.qos.logback
logback-core
1.4.0
(2)在项目resources目录下新建 logback.xml
文件
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %msg%n
运行代码,程序正常输出:
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
Original: https://www.cnblogs.com/happyfuns/p/16749527.html
Author: happyfuns
Title: slf4j、log4j2及logback使用
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/801550/
转载文章受原作者版权保护。转载请注明原作者出处!