slf4j、log4j2及logback使用1、问题来源之前看过关于slf4j、log4j2及logback的介绍,slf4j是门面,log4j2及logback是具体实现,仅使用slf4j门面是无法输出日志的 。
本文采用jdk11
,测试代码Slf4jTest.java
如下:
import lombok.extern.slf4j.Slf4j;@Slf4jpublic 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门面,没有相关实现 。
【slf4j、log4j2及logback使用】
文章插图
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.PatternLayoutlog4j.appender.console.Target = System.outlog4j.appender.console.Threshold = DEBUGlog4j.appender.console.layout.ConversionPattern=%-4r [%t]%-5p %c %x - %m%n
运行代码,程序正常输出:0[main]INFObinghe.concurrent.Slf4jTest- info1[main]DEBUG binghe.concurrent.Slf4jTest- debug2[main]ERROR binghe.concurrent.Slf4jTest- error2[main]WARNbinghe.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] info2022-10-02 21:13:37.181 DEBUG [main] debug2022-10-02 21:13:37.181 ERROR [main] error2022-10-02 21:13:37.181 WARN[main] warn
推荐阅读
- Bootstrap5 如何创建多媒体对象
- 实验02_Proteus仿真数码管显示代码
- 51单片机下实现软件模拟IIC通信
- 面向制造企业普适性ERP、MES类产品为什么那么难找?
- css语言
- Apollo 中配置String、Map和List和默认值
- 实验02_Proteus仿真数码管显示报告
- 岭(Ridge 线性回归大结局、 Lasso回归原理、公式推导),你想要的这里都有
- 通用 HTTP 签名组件的另类实现
- 密码学奇妙之旅、02 混合加密系统、AES、RSA标准、Golang代码