一、引言

这里先说下为什么是用SLF4J,而不是Log4j、Logback

阿里巴巴Java开发手册中:
【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架  
SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一

业界老大哥都说了,笔者这个小菜鸟难道还顺着网线过去battle QAQ?
但好歹得弄明白凭啥就【强制】了呗,查阅资料后,大意是因为:
SLF4J是一个日志抽象层,允许你使用任何一个日志系统,并且可以随时切换还不需要动到已经写好的程序,
这对于第三方组件的引入的不同日志系统来说几乎零学习成本了,况且它的优点不仅仅这一个而已,
还有简洁的占位符的使用和日志级别的判断,众所周知的日志读写一定会影响系统的性能,但这些特性都是对系统性能友好的

So,心悦诚服,那么具体看下Spring Boot怎么快速整合吧,这里笔者用Lombok插件提供的注解,就十分优雅

二、导入的Maven依赖

<!--整合lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<!--整合lombok-->

三、安装插件

在IDEA中(笔者主要使用IDEA),File——>Settings

lombok插件下载.png

四、配置相关数据源

# 输出日志
logging:
  level:
    com: error
  file:
    path: ./log
注意com为项目路径,不同层级可以配置不同输出等级比如:
# 输出日志
logging:
  level:
    com.im.service: error
    com.im.controller: debug
  file:
    path: ./log

五、测试

新建创建一个Controller,注意这里就需要使用@Slf4j的注解啦,这里使用配置的只输出error:
@Slf4j
@Controller
@RequestMapping("/test")
public class TestController {
    
    @RequestMapping(value = "/testSlf4j")
    public void testSlf4j() {
        log.info("info");
        log.debug("debug");
        log.error("error");
    }
输出的结果只有error,就ok啦:

输出结果.png

另外笔者这里是配置了file-path的,日志会输出到指定的磁盘路径中,
也可以用file或者path,但是在spring boot 2.2.6中会提示file或path已经过时了

六、参考

为什么要用 SLF4J

Springboot使用slf4j记录日志和lombok

七、最后

若有不足,敬请指正
虚心若愚,求知若渴

MO_or
25 声望75 粉丝

小菜鸟的成长地。