spring boot Logging的配置以及使用詳解,springlogging
前言:該篇文章基本上是翻譯的官方文檔!
spring boot使用Commons Logging作為內部的日誌系統,並且給Java Util Logging,Log4J2以及Logback都提供了預設的配置。如果使用了spring boot的Starters,那麼預設會使用Logback用於記錄日誌。
一、Log format
spring boot中預設的日誌輸出格式如下:
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: [/*]
以下項將會被輸出:
1、日期和時間--精確到毫秒,並按照時間進行簡單的排序
2、記錄層級--ERROR,WARN,INFO,DEBUG,TRACE
3、進程ID號
4、日誌內容,用"---"分隔字元分開
5、線程名字--括在方括弧中
6、日誌的名字--通常對應的是類名
注意:Logback沒有FATAL層級(映射到ERROR)
二、控制台輸出
預設的日誌配置將在寫入控制台時回顯訊息,預設會回顯ERROR,WARN,和INFO層級的訊息,你同樣可以在啟動的時候,啟用debug模式,啟動命令如下:java -jar yourapp.jar --debug
注意:你同樣可以在application.properties設定檔中指定debug=true,來開啟debug,模式一旦開啟了debug模式,那麼控制台同時會輸出容器資訊,hibernate資訊和spring boot的資訊
三、檔案輸出
預設情況下,spring boot只會將日誌輸出到console,而不會輸出到記錄檔中,如果你想將日誌寫到記錄檔中,那麼需要在application.properties設定檔中設定logging.file或者是logging.path
注意:此處是或者的關係,也就是說,你配置logging.file或者是logging.path,效果是一樣的。
下面的表格將顯示如何進行設定檔輸出:
| logging.file |
logging.path |
Example |
說明 |
| |
|
|
二者都不配置,則只輸出到Console |
| 指定檔案 |
|
my.log |
寫入指定的記錄檔。檔案名稱可以是一個確切的 位置或相對目錄 |
| |
指定的目錄 |
/var/log |
將記錄檔寫入指定的目錄,目錄可以是一個確切的位置或者是一個相對目錄 |
預設情況下,如果記錄檔的大小達到10Mb的話,就會被截斷,輸出到新的記錄檔中。
注意:日誌的配置是獨立與實際的日誌組件的,也就是說,如果為Logback指定配置的屬性為logback.configurationFile,那麼spring boot將不會管理該日誌組件。
四、記錄層級
所有支援的日誌系統都可以通過Spring Environment來指定記錄層級,例如application.properties,可以使用“logging.level.*=LEVEL”來指定日誌的層級,"LEVEL"的取值可以是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF。配置樣本如下:
logging.level.root=WARN #root日誌以WARN層級輸出 logging.level.org.springframework.web=DEBUG #org.springframework.web包下的日誌以DEBUG層級輸出 logging.level.org.hibernate=ERROR #org.hibernate包下的日誌以ERROR層級輸出
如果,我們需要指定我們的應用記錄層級了,我們也可以使用同樣的方式,如下:
logging.level.com.chhliu=INFO
上面配置中的"com.chhliu"為我們應用的包名。
五、自訂日誌輸出格式
我們可以通過logging.pattern.file以及logging.pattern.level來配置我們需要的日誌輸出格式,例如:
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
注意:以上配置,只對Logback起作用
六、使用Log4j打日誌
前面說道,我們預設的是使用Logback來作為日誌系統的,那麼,如果我們想使用Log4j來打日誌,怎麼辦了,我們需要在pom檔案中加上Log4j的starter同時排除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>
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。