千家信息网

如何使用SpringBoot集成slf4j日志配置

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍如何使用SpringBoot集成slf4j日志配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、slf4j概述slf4j,即(Simple Logging
千家信息网最后更新 2026年11月02日如何使用SpringBoot集成slf4j日志配置

这篇文章主要介绍如何使用SpringBoot集成slf4j日志配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、slf4j概述

slf4j,即(Simple Logging Facade for Java,简单门面日志)。它是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,它只服务于各种各样的日志系统。

slf4j提供了统一的记录日志的接口,对不同日志系统的具体实现进行了抽象化,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过绑定具体的日志系统来实现。在项目中使用了slf4j记录日志,并且绑定了log4j(pom.xml中配置了相应的jar包依赖),则日志会以log4j的风格输出;后期需要改为以logback的风格输出日志,只需要将jar包log4j替换成logback即可,根本不需要修改日志文件的代码。

首先看下日志打印,如下,在启动类中引入Logger日志记录:

@SpringBootApplicationpublic class SpringbootSlf4jApplication {     private static final Logger logger = LoggerFactory.getLogger(SpringbootSlf4jApplication.class);     public static void main(String[] args) {        logger.info("===============项目启动了===============");        SpringApplication app = new SpringApplication(SpringbootSlf4jApplication.class);        app.run(args);        logger.info("===============启动成功了===============");    }}

日志信息:

2020-03-21 11:28:18.017 [main] INFO com.hl.magic.slf4j.SpringbootSlf4jApplication - ===============项目启动了===============
2020-03-21 11:28:18.447 [main] INFO com.hl.magic.slf4j.SpringbootSlf4jApplication - Starting SpringbootSlf4jApplication on DESKTOP-V8RSTKO with PID 17476
2020-03-21 11:28:18.447 [main] DEBUG com.hl.magic.slf4j.SpringbootSlf4jApplication - Running with Spring Boot v2.1.8.RELEASE, Spring v5.1.9.RELEASE
2020-03-21 11:28:18.447 [main] INFO com.hl.magic.slf4j.SpringbootSlf4jApplication - No active profile set, falling back to default profiles: default
2020-03-21 11:28:19.077 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
2020-03-21 11:28:19.087 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
2020-03-21 11:28:19.097 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]
2020-03-21 11:28:19.097 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.24]
2020-03-21 11:28:19.157 [main] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
2020-03-21 11:28:19.157 [main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 680 ms
2020-03-21 11:28:19.287 [main] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
2020-03-21 11:28:19.387 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8080"]
2020-03-21 11:28:19.397 [main] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-03-21 11:28:19.397 [main] INFO org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
2020-03-21 11:28:19.407 [main] INFO org.springframework.web.servlet.DispatcherServlet - Completed initialization in 10 ms
2020-03-21 11:28:19.410 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''
2020-03-21 11:28:19.410 [main] INFO com.hl.magic.slf4j.SpringbootSlf4jApplication - Started SpringbootSlf4jApplication in 1.323 seconds (JVM running for 2.024)
2020-03-21 11:28:19.410 [main] INFO com.hl.magic.slf4j.SpringbootSlf4jApplication - ===============启动成功了===============

getLogger(xxxxxxx.class);这个方法将当前所在的类作为入参传递,输出日志就会显示对应的xxx类名。这样声明的好处就是方便定位日志,准确编写class信息能够提供快速定位日志的效率。

然鹅,SpringBoot内部虽然提供了slf4j,但是日志记录是需要根据项目实地需要进行配置后,才能发挥它的最大功效。OK,接下来一起来了解下SpringBoot项目集成slf4j日志的配置。

2、pom.xml的日志依赖

pom.xml中日志依赖配置如下:

    org.slf4j    slf4j-api    1.7.30        org.slf4j    slf4j-log4j12    1.7.30

3、application.yml的日志配置

SpringBoot框架内部已经集成slf4j,在使用时,根据项目实地需要,还是须对slf4j进行指定配置。

application.yml文件是SpringBoot的一个及其重要、核心的配置文件。yml 文件的层次感较强且直观,但对格式要求比较高,英文冒号后面必须要有一个空格,如果换行配置子项,须定格输入两个空格后再进行配置,否则项目估计无法启动,而且也不报错。本文测试项目的application.yml中日志配置如下:

logging:  config: /HL/IdeaProjects/SpringBoot-Item/springboot-slf4j/src/main/resources/logback.xml  level:    com.hl.magic: trace

注意:

【1】这里logback.xml的配置不同于一般日志配置;

因为在单独的一个SpringBoot工程中,配置config标签处为:locbak.xml即可;

这里在SpringBoot工程的一个子Module中集成日志配置,因此config标签处,设置为绝对路径。

【2】logging.config是用来指定项目启动的时候,读取哪个配置文件,这里指定的是日志配置文件,即子module项目根路径下的 logback.xml文件,该文件是日志的主要配置信息。

【3】level用来配置指定包的路径下应用程序的日志记录,及其日志级别。

logging.level用来指定具体的包中应用程序日志的输出级别。上面的配置表示com.hl.magic包下的所有日志输出级别为 trace,会将操作数据库的 sql 打印出来,开发时设置成 trace 方便定位问题,在生产环境上,将这个日志级别再设置成 error 级别即可。

日志常用的五个级别,根据严重程度由低到高,依次为:debug(调试 ) < info(消息) < warn(警告) < error(错误) < fatal(严重错误)。通常可以根据实际所需要的颗粒度的大小选择其中的几个,当前常用debug,info,warn,error4个级别。

4、logback.xml配置文件定义

在引入日志配置后,需要制定日志的配置文件内容,这样系统运行后,根据定制化需求才能输出我们所需的指定日志记录信息。

本文测试用例的日志配置内容logback.xml文件,详细内容如下:

                                                        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n                                                    ${LOG_HOME}/SpringBoot-Slf4j_%d{yyyy-MM-dd}.log                        30                                        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n                                    10MB                                                 

有上边可以看出,我们可以轻松的在logback.xml中定义日志输出的格式、路径、控制台输出格式、文件大小、保存时长等内容。接下来,就这些内容进行分析。

5、logback.xml配置文件解析

5.1 定义日志的存储路径

logback.xml文件中日志存储路径定义:

分析:

首先,定义日志的名称:LOG_HOME;

其次,设置输出value定义为日志的存储路径,日志都会存储在该路径下。

注意:这里勿在logback文件中使用相对路径,不管是 windows 系统还是 Linux 系统,日志存储的路径必须要是绝对路径。

5.2 定义日志的输出格式

分析:

首先,定义日志格式的名称:LOG_PATTERN

其次,设置日志的具体格式value。

"%d" 表示日期(也可以使用"%date");

"%-5level" 表示级别从左显示5个字符宽度;

"%thread" 表示线程名;

"%-30.30logger{30}" 表示如果logger的名称小于30,就"-"指定左对齐;如果其名称长于30字符,就从左边较远输出的字符截掉,保持logger的名字长度最终限制为30个字符;

"%msg" 表示日志消息,`%n` 是换行符。

5.3 定义控制台输出

                    ${LOG_PATTERN}                                

分析:

使用 标签设置控制台输出(`class="ch.qos.logback.core.ConsoleAppender"`)的配置,定义为 "CONSOLE"。使用引入变量的方式: ${LOG_PATTERN}引进来即可。引入上面定义好的输出格式(LOG_PATTERN)来输出

这里,也可以直接配置格式化输出结果的方式,不过体力工作。

5.4 定义日志相关参数

在标签内定义一个名为 "FILE" 的文件参数配置。主要是配置日志文件的输出文件名、日志文件保留时间、日志文件保存的路径和日志的输出格式、及单个日志文件存储的大小。

                    ${LOG_HOME}                30                          ${LOG_PATTERN}                                                   10MB    

分析:

这里,根据前面配置的日志变量,引入到配置日志文件的输出文件名、日志文件保留时间、日志文件保存的路径和日志的输出格式、及单个日志文件存储的大小的各个标签项即可。

5.5 定义日志的输出级别

在完成前边的准备工作后,最后来定义一下日志的输出级别:

        

分析:

在标签中来项目默认的日志输出级别,这里定义级别为ERROR(用在生产环境中),然后针对ERROR级别的日志,使用引用上面定义好的控制台日志输出和日志文件的参数。这样 logback.xml 文件中的配置就设置完了。

注意:

标签并不是只能添加一个,我们还可以指定项目特定包路径的日志输出级别。

本文测试类配置日志输出级别为:DEBUG,使用最低日志输出级别,确保后边测试时能够打印出所有测试项。如果需要改变日志级别就在上面配置内容修改即可。

6、测试日志输出

在程序中,一般使用 Logger(注意引jar包为slf4j) 对象来打印出一些日志信息,可以指定打印出的日志级别,也支持占位符。

定义一个测试类:LoggerItemController.java

/** * 日志输出测试的controller */@RestController@RequestMapping("/loggerItem")public class LoggerItemController {     private static final Logger logger = LoggerFactory.getLogger(LoggerItemController.class);     @GetMapping("/logInfo")    public ResponseMessage logTest(){         logger.debug("=====>测试日志debug级别打印<====");        logger.info("=====>测试日志info级别打印<=====");        logger.error("=====>测试日志error级别打印<====");        logger.warn("=====>测试日志warn级别打印<=====");         // 使用占位符打印出一些参数信息        String csdn = "https://blog.csdn.net/qq_27706119";        String git = "https://github.com/JohnnyHL";        logger.info("======>AndOne丶的CSDN博客:{};AndOne丶的GitHub地址:{};", csdn, git);         return new ResponseMessage(ResponseStatus.SUCCESS.getStatus(),ResponseStatus.SUCCESS.getMessage());    }}

先启动项目,浏览器访问地址:127.0.0.1:8080/loggerItem/logInfo

查看控制台打印信息:

=====>测试日志debug级别打印<====
=====>测试日志info级别打印<=====
=====>测试日志error级别打印<====
=====>测试日志warn级别打印<=====
======>AndOne丶的CSDN博客:https://blog.csdn.net/qq_27706119;AndOne丶的GitHub地址:https://github.com/JohnnyHL;

日志的输出级别中,DEBUG为最低级别,这样能打印出全部信息。如果提高日志输出级别,比如选择INFO。则DEBUG 这条记录将不会被打印出来,这个大家可自行测试即可。同时,查看下前边配置的日志存储路径:"/HL/IdeaProjects/SpringBoot-Item/springboot-slf4j/log"目录,该目录下记录了项目启动,以及后面生成的所有日志记录。在日常开发过程中,项目部署后,可通过查看日志文件来定位问题。

以上是"如何使用SpringBoot集成slf4j日志配置"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

日志 配置 输出 级别 文件 测试 项目 路径 格式 内容 存储 信息 标签 系统 分析 控制台 控制 名称 大小 字符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 天津市摩尔互联网科技 湖南永感互联网科技有限公司 工业互联网科技新基建 金诺互联网科技 大白互联网科技 互联网科技股午盘股票涨跌 互联网科技创新企业排名 常德市电业局互联网科技部 互联网大会黑科技排名 南山科技园互联网公司有哪些 互联网科技产业特征 中国互联网十大科技股排名 国大互联网教育科技有限公司工作 燊美集互联网科技有限公司 保险科技服务互联网营销体系 厦门江牛科技互联网 广州互联网高科技取餐柜 西安左小互联网科技有限公司 承德科技产业互联网平台 南京欣网互联网络科技 广州互联网科技公司 广州紫鲸互联网科技 互联网科技的未来发展 科技互联网创业计划书 云创客互联网科技公司 深圳市优智互联网科技有限公司 乌苏新华互联网科技做什么的 中国互联网公司排名锤子科技 滨湖区互联网智能科技产品有哪些
0