springboot 控制台输出错误信息_springboot日志详解
一. 主流日志框架
市場上存在非常多的日志框架。 JUL(java.util.logging),JCL(Apache Commons Logging),Log4j,Log4j2,Logback、 SLF4j、 jboss-logging等。 Spring Boot在框架內容部使用JCL,spring-boot-starter-logging采用了 slf4j+logback的形式,Spring Boot也能自動適配(jul、 log4j2、 logback) 并 簡化配置。
在寫log4j的兩種配置方式(xml和propertiies)時我就在想“為什么使用log4j時需要導入self4j、log4j和整合jar包”?
經過一番的周折之后,終于獲取到了答案,其實答案很簡單,日志分為兩類:日志門面和日志實現兩種,這兩個之間的關系相當于java中接口和實現類的關系,接下來對上面的日志框架做一下簡單的分類:
ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">日志門面日志實現他們之間不是一一對應關系,只是這樣寫看起來美觀點。
二、日志的使用
- SpringBoot:底層是Spring框架,Spring框架默認是用JCL
- SpringBoot選用SLF4j和logback
- 以后開發的時候,日志記錄方法的調用,不應該來直接調用日志的實現類,而是調用日志抽象層里面的方法;給系統里面導入slf4j的jar和logback的實現jar
1、jar包的引入
從上面可知,導入日志需要在上面表中選擇一個日志門面和一個日志實現。下面以Slf4j為例展示其對應關系如下:
這里又有一個問題,springboot默認使用SLF4j和logback,底層spring默認使用JCL,然后如果導入了Hibernate(jboss-logging),如何使別的框架和我一起統一使用slf4j進行輸出?
查看Slf4j的官方文檔時,確實有解決方法,如下:
其解決思路如下:
- 將系統中其他日志框架先排除出去;
- 用中間包來替換原有的日志框架;
- 我們導入slf4j其他的實現
springboot中的日志關系
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐starter</artifactId> </dependency>總結:
- SpringBoot底層也是使用slf4j+logback的方式進行日志記錄
- SpringBoot也把其他的日志都替換成了slf4j;
- 中間替換包如:log4j-to-slf4j.jar...
springboot的處理方法和上面的圖解如出一轍,先把其它都轉換為Slf4j,支持多種日志實現。springboot2.1.6.RELEASE默認導入了Slf4j、logback和log4j,因此你不需要導入日志的相關jar包就可以使用日志的功能!
2、配置文件的編寫
- 每一個日志的實現框架都有自己的配置文件。使用slf4j以后,配置文件還是做成日志實現框架自己本身的配置文 件;
- log4j的配置文件請參考: https://javacfox.github.io/2019/06/28/Log4j%E6%97%A5%E5%BF%97%E9%85%8D%E7%BD%AE/
- logback的配置文件請參考:
總結
以上是生活随笔為你收集整理的springboot 控制台输出错误信息_springboot日志详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dubbo原理_dubbo实现原理介绍
- 下一篇: python爬虫代码提取图片中的文字_p