javascript
SpringBoot与日志配置
前言:
前文我們介紹了配置文件的原理還有如果切換配置文件的環境,個人覺得歸納為一手冊,要用的時候查一下就好了。不然記那么多挺麻煩的。。
1.日志
1、日志框架
老生常談,什么是日志;我們平時用System.out.println(“xxxxxx”)將一下比較關鍵的數據在控制臺;后來接觸了日志框架比較常用的就是Log4J了;
一般常用的框架有:
JUL,JCL,JBOSS-LOGING,longback,log4j,log4j2,slf4j等等
| JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging | Log4j JUL(java.util.logging) Log4j2 Logback |
左邊選一個門面(抽象層)、右邊來選一個實現;
日志門面: SLF4J;
日志實現:Logback;
SpringBoot選用的是SLF4J和logback
2、SLF4j使用
1、系統中使用SLF4j
我們開發的時候一般都是調用日志抽象里面的方法,而不直接調用日志的實現類,這樣可擴展性更強
我們看看這張圖,我們知道了SLF4J是接口,他有很多實現類,這次我們的項目用的是logback,如果我們想換成log4j怎么呢?我們可以到通過一個中間的適配器來適配log4j
2、如何統一日志框架
我們知道每種框架都有自己的日志系統,如果一個系統里面包含了SLF4J+logback,Spring(commons-logging),Hibernate(jboss-logging),Mybatis·····等等。如何統一日志記錄,讓所有的日志都統一使用slf4j進行輸出?
我們來看看這張圖,一個應用面向了很多日志框架,如果我們直接去掉這些依賴包的話,系統肯定會報錯的,因為Spring本來底層會調用這些框架的API等。那怎么解決?從圖中可以看出采取了偷梁換柱的做法;用另一個jar包代替了本來的jar包。比如:logging;代替后和slf4j完美契合,就可以使用。
總結:
1.先將以前的剔除
2.用中間包替換原有的日志框架
3.導入slf4j其他的實現
3、SpringBoot日志
說了這么多,我們來看看SprinBoot的日志實現
導入場景
我們可以看看依賴關系圖
分析:1.我們可以看到SpringBoot底層使用slf4j+logback的方式進行日志記錄2.其他日志會轉換成slf4j3.可以從依賴中看到明顯的替換包
4.要引用其他框架的時候記得
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency>SpringBoot能自動適配所有的日志,而且底層使用slf4j+logback的方式記錄日志,引入其他框架的時候,只需要把這個框架依賴的日志框架排除掉即可
4、日志使用;
1、默認配置
SpringBoot默認幫我們配置好了日志;
- 測試
SpringBoot修改日志的默認配置
logging.level.com.atguigu=trace#logging.path= # 不指定路徑在當前項目下生成springboot.log日志 # 可以指定完整的路徑; #logging.file=G:/springboot.log# 在當前磁盤的根路徑下創建spring文件夾和里面的log文件夾;使用 spring.log 作為默認文件 logging.path=/spring/log# 在控制臺輸出的日志的格式 logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n # 指定文件中日志輸出的格式 logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n| (none) | (none) | 只在控制臺輸出 | |
| 指定文件名 | (none) | my.log | 輸出日志到my.log文件 |
| (none) | 指定目錄 | /var/log | 輸出到指定目錄的 spring.log 文件中 |
2、指定配置
給類路徑下放上每個日志框架自己的配置文件即可;SpringBoot就不使用他默認配置的了
| Logback | logback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy |
| Log4j2 | log4j2-spring.xml or log4j2.xml |
| JDK (Java Util Logging) | logging.properties |
logback.xml:直接就被日志框架識別了;
logback-spring.xml:日志框架就不直接加載日志的配置項,由SpringBoot解析日志配置,可以使用SpringBoot的高級Profile功能
使用形式:
- 測試
直接運行就是非開發環境
切換到開發環境
或者在配置那里填寫 --spring.profiles.active=dev
結果:
PS:
如果使用logback.xml作為日志配置文件,還要使用profile功能,會有以下錯誤
no applicable action for [springProfile]總結
以上是生活随笔為你收集整理的SpringBoot与日志配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++17(24)-枚举与switch
- 下一篇: OkHttp协议介绍以及文件下载和上传+