spring boot Logging的配置以及使用詳解
前言:該篇文章基本上是翻譯的官方文檔!
spring boot使用Commons Logging作為內(nèi)部的日志系統(tǒng),并且給Java Util Logging,Log4J2以及Logback都提供了默認(rèn)的配置。如果使用了spring boot的Starters,那么默認(rèn)會(huì)使用Logback用于記錄日志。
一、Log format
spring boot中默認(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)將會(huì)被輸出:
1、日期和時(shí)間--精確到毫秒,并按照時(shí)間進(jìn)行簡(jiǎn)單的排序
2、日志級(jí)別--ERROR,WARN,INFO,DEBUG,TRACE
3、進(jìn)程ID號(hào)
4、日志內(nèi)容,用"---"分隔符分開(kāi)
5、線程名字--括在方括號(hào)中
6、日志的名字--通常對(duì)應(yīng)的是類名
注意:Logback沒(méi)有FATAL級(jí)別(映射到ERROR)
二、控制臺(tái)輸出
默認(rèn)的日志配置將在寫(xiě)入控制臺(tái)時(shí)回顯消息,默認(rèn)會(huì)回顯ERROR,WARN,和INFO級(jí)別的消息,你同樣可以在啟動(dòng)的時(shí)候,啟用debug模式,啟動(dòng)命令如下:java -jar yourapp.jar --debug
注意:你同樣可以在application.properties配置文件中指定debug=true,來(lái)開(kāi)啟debug,模式一旦開(kāi)啟了debug模式,那么控制臺(tái)同時(shí)會(huì)輸出容器信息,hibernate信息和spring boot的信息
三、文件輸出
默認(rèn)情況下,spring boot只會(huì)將日志輸出到console,而不會(huì)輸出到日志文件中,如果你想將日志寫(xiě)到日志文件中,那么需要在application.properties配置文件中設(shè)置logging.file或者是logging.path
注意:此處是或者的關(guān)系,也就是說(shuō),你配置logging.file或者是logging.path,效果是一樣的。
下面的表格將顯示如何進(jìn)行配置文件輸出:
logging.file | logging.path | Example | 說(shuō)明 |
二者都不配置,則只輸出到Console | |||
指定文件 | my.log | 寫(xiě)入指定的日志文件。文件名可以是一個(gè)確切的 位置或相對(duì)目錄 |
|
指定的目錄 | /var/log | 將日志文件寫(xiě)入指定的目錄,目錄可以是一個(gè)確切的位置或者是一個(gè)相對(duì)目錄 |
默認(rèn)情況下,如果日志文件的大小達(dá)到10Mb的話,就會(huì)被截?cái)?,輸出到新的日志文件中?br />
注意:日志的配置是獨(dú)立與實(shí)際的日志組件的,也就是說(shuō),如果為L(zhǎng)ogback指定配置的屬性為logback.configurationFile,那么spring boot將不會(huì)管理該日志組件。
四、日志級(jí)別
所有支持的日志系統(tǒng)都可以通過(guò)Spring Environment來(lái)指定日志級(jí)別,例如application.properties,可以使用“l(fā)ogging.level.*=LEVEL”來(lái)指定日志的級(jí)別,"LEVEL"的取值可以是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF。配置示例如下:
logging.level.root=WARN #root日志以WARN級(jí)別輸出 logging.level.org.springframework.web=DEBUG #org.springframework.web包下的日志以DEBUG級(jí)別輸出 logging.level.org.hibernate=ERROR #org.hibernate包下的日志以ERROR級(jí)別輸出
如果,我們需要指定我們的應(yīng)用日志級(jí)別了,我們也可以使用同樣的方式,如下:
logging.level.com.chhliu=INFO
上面配置中的"com.chhliu"為我們應(yīng)用的包名。
五、自定義日志輸出格式
我們可以通過(guò)logging.pattern.file以及l(fā)ogging.pattern.level來(lái)配置我們需要的日志輸出格式,例如:
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
注意:以上配置,只對(duì)Logback起作用
六、使用Log4j打日志
前面說(shuō)道,我們默認(rèn)的是使用Logback來(lái)作為日志系統(tǒng)的,那么,如果我們想使用Log4j來(lái)打日志,怎么辦了,我們需要在pom文件中加上Log4j的starter同時(shí)排除Logback,如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java中的n種隨機(jī)數(shù)產(chǎn)生辦法
眾所周知,隨機(jī)數(shù)是任何一種編程語(yǔ)言最基本的特征之一。而生成隨機(jī)數(shù)的基本方式也是相同的:產(chǎn)生一個(gè)0到1之間的隨機(jī)數(shù)??此坪?jiǎn)單,但有時(shí)我們也會(huì)忽略了一些有趣的功能。2015-09-09Mybatis_plus基礎(chǔ)教程(總結(jié)篇)
這篇文章主要介紹了Mybatis_plus基礎(chǔ)教程(總結(jié)篇),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09java Swing組件setBounds()簡(jiǎn)單用法實(shí)例分析
這篇文章主要介紹了java Swing組件setBounds()簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Swing組件setBounds()方法的功能與簡(jiǎn)單使用方法,需要的朋友可以參考下2017-11-11微信小程序之搜索分頁(yè)功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了微信小程序之搜索分頁(yè)功能的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06淺談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09關(guān)于Java實(shí)現(xiàn)HttpServer模擬前端接口調(diào)用
這篇文章主要介紹了關(guān)于Java實(shí)現(xiàn)Http?Server模擬前端接口調(diào)用,Http?協(xié)議是建立在?TCP?協(xié)議之上的協(xié)議,所以能用?TCP?來(lái)自己模擬一個(gè)簡(jiǎn)單的?Http?Server?當(dāng)然是可以的,需要的朋友可以參考下2023-04-04