Spring Boot Logging 配置


前言

spring boot 使用 Commons Logging 作為內部的日志系統,並且給 Java Util Logging,Log4J2 以及 Logback 都提供了默認的配置。如果使用了 spring boot的 Starters,那么默認會使用 Logback 用於記錄日志。日志默認輸出到控制台但也能輸出到文件中。

一、Log format

spring boot中默認的日志輸出格式如下:

2021-04-13 14:26:14.872  INFO 12428 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-04-13 14:26:14.872  INFO 12428 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1379 ms
2021-04-13 14:26:14.962  INFO 12428 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
2021-04-13 14:26:15.114  INFO 12428 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
2021-04-13 14:26:15.874  INFO 12428 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-04-13 14:26:16.101  INFO 12428 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@78d6447a, org.springframework.security.web.context.SecurityContextPersistenceFilter@2b2f5fcf, org.springframework.security.web.header.HeaderWriterFilter@75483843, org.springframework.security.web.authentication.logout.LogoutFilter@2b8bb184, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@2a3194c6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@711d1a52, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@288ca5f0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7a729f84, org.springframework.security.web.session.SessionManagementFilter@5ec4ff02, org.springframework.security.web.access.ExceptionTranslationFilter@14ef2482, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1a4d1ab7]
2021-04-13 14:26:16.210  INFO 12428 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2021-04-13 14:26:16.219  INFO 12428 --- [           main] org.javaboy.vhr.VhrApplication           : Started VhrApplication in 3.166 seconds (JVM running for 4.234)
2021-04-13 14:26:31.579  INFO 12428 --- [nio-8081-exec-1] o.apache.tomcat.util.http.parser.Cookie  : A cookie header was received [1604626050,1606126871,1606434674; username-localhost-8888="2|1:0|10:1616408620|23:username-localhost-8888|44:YzZmNjk3ZDI3MjM2NDYxMWE1N2E3NTVmODc0YzllY2E=|bc1e0d3af6e35720077cbcf499e7cd01b7a72764efc7d767c4a8d72cbacacf22"; JSESSIONID=3F003816EE3D479B3D99E707441614B5] that contained an invalid cookie. That cookie will be ignored.

以下項將會被輸出:

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.propertie 配置文件中指定 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的話,就會被截斷,輸出到新的日志文件中。

四、日志級別

所有支持的日志系統都可以通過 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=debug

上面配置中的"com.chhliu"為我們應用的包名。

logging.level 設置日志級別,后面跟生效的區域,比如 root 表示整個項目,也可以設置為某個包下,也可以具體到某個類名(日志級別的值不區分大小寫)

五、自定義日志輸出格式

我們可以通過 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 起作用

參考文章

https://blog.csdn.net/liuchuanhong1/article/details/65442302

https://www.jianshu.com/p/1fa12b92d5c4?utm_campaign=haruki


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM