嘿,很久不見,你還好嗎?git
我通常都是爲你們帶來項目上比較實用的東西,此次咱們來試試項目開發中對日誌的處理,但願對你有所幫助。github
一、爲何要用日誌?spring
你是否由於項目出現問題,查找日誌文件定位錯誤花費N多時間,爲此苦不堪言?app
二、Spring Boot 默認集成Logback。日誌輸出內容元素具體以下:框架
三、日誌級別從低到高分爲:運維
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
一下吧,謝謝咯。
仍是簡單說一下配置問題吧:
第一步,你要將 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實現日誌分級打印
[3] 本節源碼