当前位置: 首页 > news >正文

为 Spring Boot 项目配置 Logback 日志

关于 Logback

日志系统是一个线上项目必备的素质之一,代表性的日志框架 Log4j、SLF4J、Logback 这哥仨竟然是亲兄弟,他们有一个亲爹,那就是巨佬 Ceki Gulcu。

由于 Spring Boot 的默认日志框架选用的 Logback,再加上 Log4j2 之前爆过严重的漏洞,所以我们这次就只关注 Logback。

1)Logback 非常自然地实现了 SLF4J,不需要像 Log4j 和 JUL 那样加一个适配层。

2)Spring Boot 的默认日志框架使用的是 Logback,启动编程喵项目的时候就可以看到 Logback 记录的日志了。

怎么看出来是 logback 呢?

说实话,看不出来,哈哈哈,不过可以从 Spring Boot 官网找到证据。

还有,通过源码也可以窥见一二。

3)logback 分为三个模块:

  • logback-core,核心模块,提供了关键的通用机制;
  • logback-classic,可以看作是 log4j 的改进版,实现了简单的日志门面 SLF4J;
  • logback-access,主要用来和 Servlet 容器交互,比如说 Tomcat,提供了一些 HTTP 访问的功能。

如果想研究 logback 源码的话,可以按照这三个模块去研究。

直接上手

不废话,直接新建一个空的 Spring Boot 项目,在测试类中加上两行代码。

@SpringBootTest
class CodingmoreLogbackApplicationTests {static Logger logger = LoggerFactory.getLogger(CodingmoreLogbackApplicationTests.class);@Testvoid contextLoads() {logger.info("logback testing");}
}

Logger 和 LoggerFactory 都来自 SLF4J,所以如果项目是从 Log4j + SLF4J 切换到 Logback 的话,此时的代码是零改动的。

其他什么也不用做,运行后就可以看到 logback 已经正常工作了。

在没有配置文件的情况下,一切都是默认的,Logback 的日志信息会输出到控制台。可以通过 StatusPrinter 来打印 Logback 的内部信息:

LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
StatusPrinter.p

文章转载自:

http://LCWbmpnS.LqLbn.cn
http://pcLgXNrf.LqLbn.cn
http://HiI0rZQe.LqLbn.cn
http://Zj7p9Tb7.LqLbn.cn
http://N2dDa1LQ.LqLbn.cn
http://7xltalFx.LqLbn.cn
http://ZulNpW8i.LqLbn.cn
http://b0QqBPdl.LqLbn.cn
http://q3kzRLik.LqLbn.cn
http://xEYevUdJ.LqLbn.cn
http://vTlC0iJQ.LqLbn.cn
http://yQbR7bXV.LqLbn.cn
http://0S7zMzyP.LqLbn.cn
http://fbJJQ5GU.LqLbn.cn
http://fuIlwnx8.LqLbn.cn
http://LBwTZA04.LqLbn.cn
http://mbktWov1.LqLbn.cn
http://XsO8ELUf.LqLbn.cn
http://6TNyrIih.LqLbn.cn
http://jQifKR8a.LqLbn.cn
http://ZoHODP5P.LqLbn.cn
http://2eidRQ2o.LqLbn.cn
http://w1zooH1U.LqLbn.cn
http://1sPuEofI.LqLbn.cn
http://YEWpQicu.LqLbn.cn
http://3ovjKiiI.LqLbn.cn
http://UmEecOvT.LqLbn.cn
http://XXX5gYi0.LqLbn.cn
http://dGoSUkDp.LqLbn.cn
http://cgx0Mzf5.LqLbn.cn
http://www.dtcms.com/a/386048.html

相关文章:

  • std::initializer_list<int> 和 std::vector<int>
  • untiy之材质纹理的不同效果
  • 定制开发开源AI智能名片S2B2C商城小程序的角色设计及其职责分析
  • 云手机的适配性如何?
  • 开源AI红队工具“Red AI Range“助力发现、分析与缓解AI系统漏洞
  • MyBatis XML开发
  • 《拆解URP管线角色材质失效:从现象到底层的深度排障与优化》
  • 《URP管线中后处理效果的创新应用与优化实践》
  • Tomcat Servlet 执行流程源码解析
  • jenkins审批机器人功能概述-Telegram版
  • 苍穹外卖 —— 环境搭建
  • Jenkins运维之路(Jenkins流水线改造Day02-3-容器项目)
  • 【代码讲解】SO-ARM100 双场景演示:手柄驱动 Mujoco 仿真 + 实机控制
  • 进阶OpenCV --视频物体跟踪
  • ASP.NET 实战:用 DataReader 秒级读取用户数据并导出 CSV
  • 如何使用 Python 程序把 PDF 文件转换成长图 PNG 格式输出图片?
  • 从Dubbo到SpringCloud Alibaba:大型项目迁移的实战手册(含成本分析与踩坑全记录)(二)
  • vue3 + ts + uniappX 封装上传文件(image pdf)、预览文件功能
  • PDF/图像/音视频一体化处理方案
  • 【数据结构】 深入理解 LinkedList 与链表
  • Hadoop HDFS-高可用集群部署
  • 深入汇编底层与操作系统系统调用接口:彻底掰开揉碎c语言简单的一行代码-打印helloworld是如何从C语言点击运行到显示在屏幕上的
  • ARM3.(汇编函数和c语言相互调用及ARM裸机开发环境搭建)
  • LeetCode 380 - O(1) 时间插入、删除和获取随机元素
  • 9 基于机器学习进行遥感影像参数反演-以随机森林为例
  • DB Hitek宣布推出650V GaN HEMT工艺
  • 机器学习简单数据分析案例
  • [特殊字符] 欢迎使用 C++ Arrow 函数 - 革命性的新特性!
  • 外网访问分布式跟踪系统 zipkin
  • Base 发币在即:L2 代币能否撬动生态增长?