SpringBoot項(xiàng)目集成日志的實(shí)現(xiàn)方法
SpringBoot使用Commons Logging進(jìn)行所有內(nèi)部日志記錄,但保留底層日志實(shí)現(xiàn)。默認(rèn)提供了Java Util Logging, Log4j2 和Logback日志配置。在每種情況下,都預(yù)先配置為使用控制臺(tái)輸出,并且還提供了可選的文件輸出。(來(lái)自官網(wǎng))
日志格式
SpringBoot默認(rèn)的日志輸出如下所示:
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms 2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
輸出以下項(xiàng)目:
- 日期和時(shí)間:毫秒精度并且容易排序
- 日志級(jí)別:ERROR, WARN, INFO, DEBUG, TRACE
- 進(jìn)程ID
- --- 分隔符來(lái)區(qū)分實(shí)際日志的開(kāi)始
- 線程名:括在方括號(hào)中(可能會(huì)被截?cái)啵?/li>
- 日志記錄器名:這通常是源類名(通??s寫)
- 日志信息
Logback中沒(méi)有FATAL(致命)級(jí)別,它被映射到ERROR級(jí)別
( 日志格式 來(lái)自 官網(wǎng) )
控制臺(tái)輸出
SpringBoot控制臺(tái)輸出默認(rèn)支持三種日志級(jí)別:ERROR,WARN和INFO
如果還想輸出別的級(jí)別日志,例如DEBUG或TRACE(只能二選一),如下操作:
啟動(dòng)應(yīng)用程序時(shí),增加--debug或--trace標(biāo)志
$ java -jar myapp.jar -- debug
說(shuō)明:使用debug調(diào)試模式啟動(dòng)應(yīng)用程序不會(huì)將應(yīng)用程序配置為使用DEBUG級(jí)別記錄日志。復(fù)制代碼
在application.yml中(或application.properties中)增加debug: true或trace: true(或debug=true/trace=true)
application.yml文件:
debug: true
application.properties文件:
debug=true
多彩輸出:
如果終端支持ANSI(表示顏色),可以設(shè)置彩色輸出。
application.yml中設(shè)置:
# 檢查終端是否支持ANSI,是的話就采用彩色輸出 spring: output: ansi: enabled: detect
application.properties中設(shè)置:
# 檢查終端是否支持ANSI,是的話就采用彩色輸出 spring.output.ansi.enabled=detect
文件輸出
SpringBoot默認(rèn)配置日志只會(huì)輸出到控制臺(tái),并不會(huì)記錄到文件中,但通常生產(chǎn)環(huán)境需要把日志記錄到文件中。
配置屬性如下:
- logging.file: 設(shè)置日志輸出文件,絕對(duì)路徑或相對(duì)路徑都可以。
- logging.path: 設(shè)置日志輸出目錄,會(huì)在該目錄下創(chuàng)建spring.log文件,并寫入日志內(nèi)容。
日志文件在達(dá)到10 MB時(shí)滾動(dòng)輸出,并且與控制臺(tái)輸出一樣,默認(rèn)情況下會(huì)記錄ERROR,WARN和INFO級(jí)別的日志。可以使用logging.file.max-size屬性更改大小限制。除非已設(shè)置logging.file.max-history屬性,否則以前輪換的日志文件將被無(wú)限期歸檔。(來(lái)自官網(wǎng))
注意點(diǎn):
日志記錄系統(tǒng)在應(yīng)用程序生命周期的早期初始化。因此,在通過(guò)@PropertySource注解加載的屬性文件中找不到日志記錄屬性。
日志記錄屬性獨(dú)立于實(shí)際的日志記錄基礎(chǔ)結(jié)構(gòu)。因此,SpringBoot不管理特定的配置密鑰(例如Logback的logback.configurationFile)。 (來(lái)自官網(wǎng))
application.yml中設(shè)置:
logging: # 設(shè)置相對(duì)路徑的日志輸出文件 file: log/my.log # 設(shè)置日志輸出路徑,默認(rèn)會(huì)生成log/spring.log日志文件 path: log logging: # 設(shè)置絕對(duì)路徑的日志輸出文件 file: D:\ideaProjects\SpringBootDemo\log1\mylog1.log # 設(shè)置日志輸出路徑,默認(rèn)會(huì)生成log/spring.log日志文件 path: log
application.properties中設(shè)置:
logging.file=log/my.log logging.path=log
級(jí)別控制
配置屬性格式:logging.level.*=LEVEL
- logging.level: 日志級(jí)別控制前綴,*為包名或Logger名
- LEVEL: 選項(xiàng)TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
application.yml中設(shè)置:
logging: level: # com.example.demo包下所有class以DEBUG級(jí)別輸出 com.example.demo: DEBUG # root日志以INFO級(jí)別輸出 root: INFO
說(shuō)明:
配置日志級(jí)別值大小寫均可,例如:設(shè)置成debug/info
application.properties中設(shè)置:
logging.level.com.example.demo=DEBUG logging.level.root=INFO
說(shuō)明:配置日志級(jí)別值大小寫均可,例如:設(shè)置成debug/info
刨根問(wèn)底,死磕自己(選看)
1. 日志級(jí)別設(shè)置選項(xiàng)
源碼中系統(tǒng)日志級(jí)別是個(gè)枚舉類,列出了所有日志級(jí)別,如下截圖:
根據(jù)在application.yml中設(shè)置的LEVEL值,匹配系統(tǒng)日志枚舉類,最終設(shè)置系統(tǒng)相應(yīng)包下的日志級(jí)別。
SpringBoot官網(wǎng): https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+EasyPoi實(shí)現(xiàn)excel導(dǎo)出功能
最新小編遇到這樣一個(gè)需求,根據(jù)檢索條件查詢列表并將結(jié)果導(dǎo)出到excel,實(shí)現(xiàn)過(guò)程也非常簡(jiǎn)單,感興趣的朋友跟隨小編一起看看吧2021-09-09Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法
和MyBatis類似,Spring或者Spring MVC框架在Web應(yīng)用程序的運(yùn)作中同樣主要負(fù)責(zé)處理數(shù)據(jù)庫(kù)事務(wù),這里我們就來(lái)看一下Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法2016-06-06SpringBoot JPA 表關(guān)聯(lián)查詢實(shí)例
本篇文章主要介紹了SpringBoot JPA 表關(guān)聯(lián)查詢實(shí)例,使用JPA原生的findBy語(yǔ)句實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04解決常見(jiàn)的Eclipse SVN插件報(bào)錯(cuò)方法詳解
本篇文章是對(duì)常見(jiàn)的Eclipse SVN插件報(bào)錯(cuò)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05SpringBoot?thymeleaf實(shí)現(xiàn)餅狀圖與柱形圖流程介紹
這篇文章主要介紹了SpringBoot?thymeleaf實(shí)現(xiàn)餅狀圖與柱形圖流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12幾句話說(shuō)清session,cookie和token的區(qū)別及說(shuō)明
這篇文章主要介紹了幾句話說(shuō)清session,cookie和token的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12