spring-boot | 日誌

嘿,很久不見,你還好嗎?git

我通常都是爲你們帶來項目上比較實用的東西,此次咱們來試試項目開發中對日誌的處理,但願對你有所幫助。github

理論知識

一、爲何要用日誌?spring

你是否由於項目出現問題,查找日誌文件定位錯誤花費N多時間,爲此苦不堪言?app

二、Spring Boot 默認集成Logback。日誌輸出內容元素具體以下:框架

  • 時間日期:精確到毫秒
  • 日誌級別:ERROR, WARN, INFO, DEBUG or TRACE
  • 進程ID
  • 分隔符:— 標識實際日誌的開始
  • 線程名:方括號括起來(可能會截斷控制檯輸出)
  • Logger名:一般使用源代碼的類名
  • 日誌內容

三、日誌級別從低到高分爲:運維

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

四、根據不一樣的日誌系統,你能夠按以下規則組織配置文件名,就能被正確加載:學習

Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml Log4j2:log4j2-spring.xml, log4j2.xml JDK (Java Util Logging):logging.properties測試

Spring Boot官方推薦優先使用帶有 -spring 的文件名做爲你的日誌配置(如使用 logback-spring.xml ,而不是logback.xml), 命名爲logback-spring.xml的日誌配置文件,spring boot能夠爲它添加一些spring boot特有的配置項。.net

理論知識很重要!!! 雖然說實踐出真知,可是沒有理論作支持,實踐只能是盲目的瞎摸,因此,在學好理論的前提下,結合實踐,就能更好的爲咱們服務。線程

之前在寫項目的時候,用的是Log4j,那時候就感受他很強大,日誌滾動啊,日誌保存期限啊,設置最大存儲量,異常發送郵件,等等功能。 總之,log很強大,他能幫助咱們解決不少不少的問題。

實際開發

日誌功能如此強大,那咱們怎麼在項目中如何配置,又該如何使用呢?

先申明: 我這裏是用Spring Boot搭建的項目,版本是2.x, 有可能你用的是Struts2+Spring+SpringMVC,等等之類的框架搭建。 我想說的是,推薦使用Spring Boot,你也能夠將你的SS*項目改爲Spring Boot。 若是你有好的建議也能夠push給我,咱們一塊兒交流,學習。

一、咱們先看項目目錄:

項目目錄

二、在 application.yml中須要這樣配置如下內容:

spring:
  profiles:
    active: dev
logback:
  appName: examplelog
  fileType: out

三、在 -dev.yml, -test.yml, -prod.yml 中須要添加如下配置:

logback:
  logDir: log/dev

logging:
  level:
    com.fengwenyi.log: debug
    com.fengwenyi.log.service: error

四、咱們來看一下 logback-spring.xml 寫法:

請參見源碼

五、他有什麼功能呢?

  • 日誌能夠輸出到指定文件
  • 日誌能夠按運行環境進行輸出
  • 日誌能夠按日期進行輸出
  • 不一樣包能夠指定不一樣的輸出級別

下面咱們詳細說明一下:

程序運行環境

他會根據你的配置生成對應的目錄,來存放相應的日誌文檔,方便咱們查詢。好比,開發時,咱們看dev,測試人員看test,上線運行,運維人員看 prod,這樣的好處是,咱們不只能夠方便查詢錯誤定位,也能夠設置不一樣的輸出級別。像醬紫

日誌樣式

是否是很清晰? 另外,他外按日期,天天一個文檔,是否是很貼心? 保存多久由你定。 是否是快要感動哭了? 那就 star 一下吧,謝謝咯。

API

仍是簡單說一下配置問題吧:

第一步,你要將 logback-spring.xml,放到跟我相同的目錄,內容,能夠複製過去,也能夠適當修改。

第二步,application.yml

logback:
  appName: examplelog # 日誌文件前綴
  fileType: out # 日誌後綴名

第三步,application-dev.yml,-test.yml,-prod.yml

logback:
  logDir: log/dev # 日誌目錄

logging:
  level:
    # 日誌級別配置,格式:(包名: 級別)
    com.fengwenyi.log: debug 
    com.fengwenyi.log.service: error

參考文檔

[1] SpringBoot進階教程 | 第二篇:日誌組件logback實現日誌分級打印

[2] Spring Boot 日誌配置(超詳細)

[3] 本節源碼

相關文章
相關標籤/搜索