SpringBoot項目集成日志的實現(xiàn)方法
SpringBoot使用Commons Logging進行所有內(nèi)部日志記錄,但保留底層日志實現(xiàn)。默認提供了Java Util Logging, Log4j2 和Logback日志配置。在每種情況下,都預先配置為使用控制臺輸出,并且還提供了可選的文件輸出。(來自官網(wǎng))

日志格式
SpringBoot默認的日志輸出如下所示:
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: [/*]
輸出以下項目:
- 日期和時間:毫秒精度并且容易排序
- 日志級別:ERROR, WARN, INFO, DEBUG, TRACE
- 進程ID
- --- 分隔符來區(qū)分實際日志的開始
- 線程名:括在方括號中(可能會被截斷)
- 日志記錄器名:這通常是源類名(通??s寫)
- 日志信息
Logback中沒有FATAL(致命)級別,它被映射到ERROR級別
( 日志格式 來自 官網(wǎng) )
控制臺輸出
SpringBoot控制臺輸出默認支持三種日志級別:ERROR,WARN和INFO
如果還想輸出別的級別日志,例如DEBUG或TRACE(只能二選一),如下操作:
啟動應用程序時,增加--debug或--trace標志
$ java -jar myapp.jar -- debug
說明:使用debug調(diào)試模式啟動應用程序不會將應用程序配置為使用DEBUG級別記錄日志。復制代碼
在application.yml中(或application.properties中)增加debug: true或trace: true(或debug=true/trace=true)
application.yml文件:
debug: true
application.properties文件:
debug=true
多彩輸出:
如果終端支持ANSI(表示顏色),可以設置彩色輸出。
application.yml中設置:
# 檢查終端是否支持ANSI,是的話就采用彩色輸出 spring: output: ansi: enabled: detect
application.properties中設置:
# 檢查終端是否支持ANSI,是的話就采用彩色輸出 spring.output.ansi.enabled=detect
文件輸出
SpringBoot默認配置日志只會輸出到控制臺,并不會記錄到文件中,但通常生產(chǎn)環(huán)境需要把日志記錄到文件中。
配置屬性如下:
- logging.file: 設置日志輸出文件,絕對路徑或相對路徑都可以。
- logging.path: 設置日志輸出目錄,會在該目錄下創(chuàng)建spring.log文件,并寫入日志內(nèi)容。
日志文件在達到10 MB時滾動輸出,并且與控制臺輸出一樣,默認情況下會記錄ERROR,WARN和INFO級別的日志??梢允褂胠ogging.file.max-size屬性更改大小限制。除非已設置logging.file.max-history屬性,否則以前輪換的日志文件將被無限期歸檔。(來自官網(wǎng))
注意點:
日志記錄系統(tǒng)在應用程序生命周期的早期初始化。因此,在通過@PropertySource注解加載的屬性文件中找不到日志記錄屬性。
日志記錄屬性獨立于實際的日志記錄基礎結(jié)構。因此,SpringBoot不管理特定的配置密鑰(例如Logback的logback.configurationFile)。 (來自官網(wǎng))
application.yml中設置:
logging: # 設置相對路徑的日志輸出文件 file: log/my.log # 設置日志輸出路徑,默認會生成log/spring.log日志文件 path: log logging: # 設置絕對路徑的日志輸出文件 file: D:\ideaProjects\SpringBootDemo\log1\mylog1.log # 設置日志輸出路徑,默認會生成log/spring.log日志文件 path: log
application.properties中設置:
logging.file=log/my.log logging.path=log

級別控制
配置屬性格式:logging.level.*=LEVEL
- logging.level: 日志級別控制前綴,*為包名或Logger名
- LEVEL: 選項TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
application.yml中設置:
logging: level: # com.example.demo包下所有class以DEBUG級別輸出 com.example.demo: DEBUG # root日志以INFO級別輸出 root: INFO
說明:
配置日志級別值大小寫均可,例如:設置成debug/info
application.properties中設置:
logging.level.com.example.demo=DEBUG logging.level.root=INFO
說明:配置日志級別值大小寫均可,例如:設置成debug/info
刨根問底,死磕自己(選看)
1. 日志級別設置選項
源碼中系統(tǒng)日志級別是個枚舉類,列出了所有日志級別,如下截圖:

根據(jù)在application.yml中設置的LEVEL值,匹配系統(tǒng)日志枚舉類,最終設置系統(tǒng)相應包下的日志級別。

SpringBoot官網(wǎng): https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring ApplicationContextAware 接口的作用及使用方式
Spring提供了許多回調(diào)接口,用于Bean生命周期中執(zhí)行特定的操作,通過實現(xiàn)ApplicationContextAware接口,Spring提供了一種便捷的方式讓 Bean獲取對Spring容器的引用,本文介紹ApplicationContextAware接口的作用、使用方式,以及在實際應用中的常見場景,感興趣的朋友一起看看吧2024-01-01
Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決
這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Java基礎MAC系統(tǒng)下IDEA連接MYSQL數(shù)據(jù)庫JDBC過程
最近一直在學習web項目,當然也會涉及與數(shù)據(jù)庫的連接這塊,這里就總結(jié)一下在IDEA中如何進行MySQL數(shù)據(jù)庫的連接,這里提一下我的電腦是MAC系統(tǒng),使用的編碼軟件是IDEA,數(shù)據(jù)庫是MySQL2021-09-09
在windows下揪出java程序占用cpu很高的線程并完美解決
這篇文章主要介紹了在windows下揪出java程序占用cpu很高的線程并完美解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
詳解SpringBoot讀取resource目錄下properties文件的常見方式
這篇文章主要介紹了SpringBoot讀取resource目錄下properties文件的常見方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常
這篇文章主要介紹了Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常,@ControllerAdvice ,@ControllerAdvice是一個非常有用的注解,顧名思義,這是一個增強的 Controller,一般配合@ExceptionHandler使用來處理全局異常,需要的朋友可以參考下2024-01-01
java使用CountDownLatch實現(xiàn)多線程協(xié)作
在多線程編程中,經(jīng)常需要實現(xiàn)一種機制來協(xié)調(diào)多個線程的執(zhí)行,以確保某些操作在所有線程完成后再進行,CountDownLatch?就是?Java?并發(fā)包中提供的一種同步工具,下面我們就來看看如何使用CountDownLatch實現(xiàn)多線程協(xié)作吧2023-11-11

