slf4j使用教程以及常见问题解决(最新稳定版)

slf4j使用教程以及常见问题解决(最新稳定版),第1张

slf4j使用教程以及常见问题解决(最新稳定版)

1.简介
官网:https://www.slf4j.org/manual.html
(1)简单日记门面(simple logging Facade for Java)SLF4J是为各种loging APIs提供一个简单统一的接口。

(2)slf4j并不是一种具体的日志系统,而是一个用户日志系统的facade。

(3)在部署时,选择不同的日志系统包,即可自动转换到不同的日志系统上。
如:选择JDK自带的日志系统,则只需要将slf4j-api-XXX.jar和slf4j-jdkXXX.jar放置到classpath中即可,若想换成log4j的日志系统,仅需要用slf4j-log4jXXx.jar替换slf4j-jdkXXX.jar即可

(4)slf4j和log4j比较:
①log4j看成是一个完整的日志库;而slf4j是一个日志库的规范接口,可以根据不同的日志包使用不同的日志库。
②日志中需要传入参数时,log4j一般是使用字符串进行拼接的方式;
slf4j使用占位符,比字符串拼接更加高效。如logger.error("sql为 {} ",sql)。

(5)slf4j日志级别
Slf4j日志级别,级别由低到高,设置的级别约低,打印的日志越多
①trace: 一般不会使用,在日志里边也不会打印出来,最低的一个日志级别。
②debug: 一般放于程序的某个关键点的地方,用于打印一个变量值或者一个方法返回的信息之类的信息
③info 一般处理业务逻辑的时候使用,就跟 system.err打印一样,用于说明此处是干什么的。
④warn:警告,不会影响程序的运行,但是值得注意。
⑤error: 用户程序报错,必须解决的时候使用此级别打印日志。

2.使用教程
官网上最新稳定版是1.7.32,前阵子log4j出重大漏洞了,这里我们配合logback(log4j的改良版,性能更好)使用。
(1)在pom.xml引入依赖

  
        
            org.slf4j
            slf4j-api
            1.7.32
        
        
        
            ch.qos.logback
            logback-classic
            1.2.3
        

(2)在springBoot项目中添加一段controller代码

package com.example.springb_web.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class VisualController {

    private Logger logger = LoggerFactory.getLogger(VisualController.class);

    @RequestMapping(value="/test")
    @ResponseBody
    public String test(){
        String msg = "fucking good";
        logger.info("slf4j print info msg:{}",msg);
        logger.debug("slf4j print debug msg:{}",msg);
        return msg;
    }

}

这里通过http://localhost:8080/test访问可以看到控制台输出如下,可以看到info的输出了,debug没有,因为springboot内部集成了slf4j,默认是info级别:

(3)只在控制台打印,application.yml文件配置如下:

# slf4j日志配置
logging:
  # 配置级别
  level:
    root: info
    #分包配置级别,即不同的目录下可以使用不同的级别
    com.example.springb_web.controller: debug

改完之后发现输出如下:

(4)把日志输出到文件,application.yml配置:

# slf4j日志配置
logging:
  config: classpath:logback.xml

在resource下新建logback.xml:



    
    

    
    
        
            
            %d %p (%file:%line)- %m%n
            UTF-8
        
    

    
    
    
    
        D:/slf4j_log/springboot.log
        
        
        
            
            D:/slf4j_log/springboot.%d.%i.log
            
            30
            
                
                5MB
            
        
        
            
            
                %d %p (%file:%line)- %m%n
            
            
            UTF-8 
        
    

    
    
        
    

    
    
    
        
        
    

可以看到控制台和日志文件都成功输出了:


3.常见报错解决(持续更新)
(1)yml配置报错如:
“Failed to bind properties under ‘logging.level’”
可能跟版本有关,参考yml配置上面的使用教程的第(3)步

(2)启动时报错:
“class path contains multiple slf4j bindings
found binding in …”
不要忽视这种警告,若有多个jar包类冲突,需要把加载jar包顺序调整,正确的那个,比如slf4j-log4j12jar包放在最上面。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存