spring-boot | 日誌

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

我一般都是爲大家帶來項目上比較實用的東西,這次我們來試試項目開發中對日誌的處理,希望對你有所幫助。

理論知識

1、爲什麼要用日誌?

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

2、Spring Boot 默認集成Logback。日誌輸出內容元素具體如下:

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

3、日誌級別從低到高分爲:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

4、根據不同的日誌系統,你可以按如下規則組織配置文件名,就能被正確加載:

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特有的配置項。

理論知識很重要!!! 雖說實踐出真知,但是沒有理論做支持,實踐只能是盲目的瞎摸,所以,在學好理論的前提下,結合實踐,就能更好的爲我們服務。

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

實際開發

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

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

1、我們先看項目目錄:

項目目錄

2、在 application.yml中需要這樣配置以下內容:

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

3、在 -dev.yml, -test.yml, -prod.yml 中需要添加以下配置:

logback:
  logDir: log/dev

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

4、我們來看一下 logback-spring.xml 寫法:

請參見源碼

5、他有什麼功能呢?

  • 日誌可以輸出到指定文件
  • 日誌可以按運行環境進行輸出
  • 日誌可以按日期進行輸出
  • 不同包可以指定不同的輸出級別

下面我們詳細說明一下:

程序運行環境

他會根據你的配置生成對應的目錄,來存放相應的日誌文檔,方便我們查詢。比如,開發時,我們看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] 本節源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章