SpringBoot - 第十章 | 日誌管理
Spring Boot使用Commons Logging進行所有內部日誌記錄,但保留底層日誌實現。 為Java Util Logging,Log4J2和Logback提供了預設配置。在每種情況下,記錄器都預先配置為使用控制台輸出,並且還提供可選的文件輸出。
預設情況下,如果使用”Starters”,則將使用Logback進行日誌記錄。 還包括適當的Logback路由,以確保使用Java Util Logging,Commons Logging,Log4J或SLF4J的依賴庫都能正常工作。
預設日誌
預設情況下,Spring Boot會用Logback來記錄日誌,並用INFO級別輸出到控制台。在運行應用程序和其他例子時,你應該已經看到很多INFO級別的日誌了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.3 .RELEASE) 2019 -03 -19 09 :38 :22.003 INF O 2588 --- [ main] c.j.l.s.chapter10.Chapter10Application : Starting Chapter10Application on localhost with PID 2588 (/Users/morose/Documents/workspace-SpringBoot/chapter-10 /target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-10 )2019 -03 -19 09 :38 :22.008 INF O 2588 --- [ main] c.j.l.s.chapter10.Chapter10Application : No active profile set, falling back to default profiles: default2019 -03 -19 09 :38 :23.144 INF O 2588 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2019 -03 -19 09 :38 :23.175 INF O 2588 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2019 -03 -19 09 :38 :23.175 INF O 2588 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0 .16 ]2019 -03 -19 09 :38 :23.187 INF O 2588 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/morose/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]2019 -03 -19 09 :38 :23.295 INF O 2588 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2019 -03 -19 09 :38 :23.295 INF O 2588 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1212 ms2019 -03 -19 09 :38 :23.554 INF O 2588 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019 -03 -19 09 :38 :23.803 INF O 2588 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019 -03 -19 09 :38 :23.806 INF O 2588 --- [ main] c.j.l.s.chapter10.Chapter10Application : Started Chapter10Application in 2.149 seconds (JVM running for 2.555 )
格式化日誌
訊息內容
元素
說明
2019-03-19 09:38:23.144
時間日期
精確到毫秒
INFO
日誌級別
ERROR, WARN, INFO, DEBUG or TRACE
2588
進程ID
進程ID
- - -
分隔符
- - - 標識實際日誌的開始
[ main]
線程名
方括號括起來(可能會截斷控制台輸出)
o.s.b.w.embedded.tomcat.TomcatWebServer
Logger名
通常使用源代碼的類名
Tomcat initialized with port(s): 8080 (http)
日誌內容
日誌內容
控制台輸出 在Spring Boot中預設配置了FATAL、ERROR、WARN和INFO級別的日誌輸出到控制台。
可以看到輸出的Log等級,就是包含INFO以上的等級
我們可以通過兩種方式切換至DEBUG級別:
在運行命令後加入 –debug,如:$java -jar xxx.jar –debug
在application.properties中 配置debug=true,該屬性置為true的時候,核心Logger(包含嵌入式容器、hibernate、spring)會輸出更多內容,但是你自己應用的日誌並不會輸出為DEBUG級別 。
修改 application.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 2019 -03 -19 10 :35 :42.209 DEBUG 2722 --- [ main] .c.l.ClasspathLoggingApplicationListener : Application started with classpath: [file:/Users/morose/Documents/workspace-SpringBoot/chapter-10 /target/classes/, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.1 .3 .RELEASE/spring-boot-starter-web-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot-starter/2.1 .3 .RELEASE/spring-boot-starter-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot/2.1 .3 .RELEASE/spring-boot-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.1 .3 .RELEASE/spring-boot-autoconfigure-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.1 .3 .RELEASE/spring-boot-starter-logging-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/ch/qos/logback/logback-classic/1.2 .3 /logback-classic-1.2 .3 .jar, file:/Users/morose/.m2/repository/ch/qos/logback/logback-core/1.2 .3 /logback-core-1.2 .3 .jar, file:/Users/morose/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.11 .2 /log4j-to-slf4j-2.11 .2 .jar, file:/Users/morose/.m2/repository/org/apache/logging/log4j/log4j-api/2.11 .2 /log4j-api-2.11 .2 .jar, file:/Users/morose/.m2/repository/org/slf4j/jul-to-slf4j/1.7 .25 /jul-to-slf4j-1.7 .25 .jar, file:/Users/morose/.m2/repository/org/yaml/snakeyaml/1.23 /snakeyaml-1.23 .jar, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.1 .3 .RELEASE/spring-boot-starter-json-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.9 .8 /jackson-databind-2.9 .8 .jar, file:/Users/morose/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.9 .0 /jackson-annotations-2.9 .0 .jar, file:/Users/morose/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9 .8 /jackson-core-2.9 .8 .jar, file:/Users/morose/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9 .8 /jackson-datatype-jdk8-2.9 .8 .jar, file:/Users/morose/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9 .8 /jackson-datatype-jsr310-2.9 .8 .jar, file:/Users/morose/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9 .8 /jackson-module-parameter-names-2.9 .8 .jar, file:/Users/morose/.m2/repository/org/hibernate/validator/hibernate-validator/6.0 .14 .Final/hibernate-validator-6.0 .14 .Final.jar, file:/Users/morose/.m2/repository/javax/validation/validation-api/2.0 .1 .Final/validation-api-2.0 .1 .Final.jar, file:/Users/morose/.m2/repository/org/jboss/logging/jboss-logging/3.3 .2 .Final/jboss-logging-3.3 .2 .Final.jar, file:/Users/morose/.m2/repository/com/fasterxml/classmate/1.4 .0 /classmate-1.4 .0 .jar, file:/Users/morose/.m2/repository/org/springframework/spring-web/5.1 .5 .RELEASE/spring-web-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/spring-beans/5.1 .5 .RELEASE/spring-beans-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/spring-webmvc/5.1 .5 .RELEASE/spring-webmvc-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/spring-aop/5.1 .5 .RELEASE/spring-aop-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/spring-context/5.1 .5 .RELEASE/spring-context-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/spring-expression/5.1 .5 .RELEASE/spring-expression-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.1 .3 .RELEASE/spring-boot-starter-tomcat-2.1 .3 .RELEASE.jar, file:/Users/morose/.m2/repository/javax/annotation/javax.annotation-api/1.3 .2 /javax.annotation-api-1.3 .2 .jar, file:/Users/morose/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0 .16 /tomcat-embed-core-9.0 .16 .jar, file:/Users/morose/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/9.0 .16 /tomcat-embed-el-9.0 .16 .jar, file:/Users/morose/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0 .16 /tomcat-embed-websocket-9.0 .16 .jar, file:/Users/morose/.m2/repository/org/slf4j/slf4j-api/1.7 .25 /slf4j-api-1.7 .25 .jar, file:/Users/morose/.m2/repository/org/springframework/spring-core/5.1 .5 .RELEASE/spring-core-5.1 .5 .RELEASE.jar, file:/Users/morose/.m2/repository/org/springframework/spring-jcl/5.1 .5 .RELEASE/spring-jcl-5.1 .5 .RELEASE.jar] . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.3 .RELEASE) 2019 -03 -19 10 :35 :42.319 INF O 2722 --- [ main] c.j.l.s.chapter10.Chapter10Application : Starting Chapter10Application on localhost with PID 2722 (/Users/morose/Documents/workspace-SpringBoot/chapter-10 /target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-10 )2019 -03 -19 10 :35 :42.320 INF O 2722 --- [ main] c.j.l.s.chapter10.Chapter10Application : No active profile set, falling back to default profiles: default2019 -03 -19 10 :35 :42.320 DEBUG 2722 --- [ main] o.s.boot.SpringApplication : Loading source class com.jj.learning.springboot.chapter10.Chapter10Application2019 -03 -19 10 :35 :42.389 DEBUG 2722 --- [ main] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'file:/Users/morose/Documents/workspace-SpringBoot/chapter-10 /target/classes/application.properties' (classpath:/application.properties)2019 -03 -19 10 :35 :42.390 DEBUG 2722 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@50 a7bc6e2019 -03 -19 10 :35 :43.400 DEBUG 2722 --- [ main] .s.b.w.e.t.TomcatServletWebServerFactory : Code archive: /Users/morose/.m2/repository/org/springframework/boot/spring-boot/2.1 .3 .RELEASE/spring-boot-2.1 .3 .RELEASE.jar2019 -03 -19 10 :35 :43.401 DEBUG 2722 --- [ main] .s.b.w.e.t.TomcatServletWebServerFactory : Code archive: /Users/morose/.m2/repository/org/springframework/boot/spring-boot/2.1 .3 .RELEASE/spring-boot-2.1 .3 .RELEASE.jar2019 -03 -19 10 :35 :43.401 DEBUG 2722 --- [ main] .s.b.w.e.t.TomcatServletWebServerFactory : Document root: /Users/morose/Documents/workspace-SpringBoot/chapter-10 /src/main/webapp2019 -03 -19 10 :35 :43.434 INF O 2722 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2019 -03 -19 10 :35 :43.467 INF O 2722 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2019 -03 -19 10 :35 :43.468 INF O 2722 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0 .16 ]2019 -03 -19 10 :35 :43.483 INF O 2722 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/morose/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]2019 -03 -19 10 :35 :43.602 INF O 2722 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2019 -03 -19 10 :35 :43.602 INF O 2722 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1212 ms2019 -03 -19 10 :35 :43.635 DEBUG 2722 --- [ main] o.s.b.w.s.ServletContextInitializerBeans : Mapping filters: characterEncodingFilter urls= [/*], hiddenHttpMethodFilter urls= [/*], formContentFilter urls= [/*], requestContextFilter urls= [/*]2019 -03 -19 10 :35 :43.636 DEBUG 2722 --- [ main] o.s.b.w.s.ServletContextInitializerBeans : Mapping servlets: dispatcherServlet urls= [/]2019 -03 -19 10 :35 :43.664 DEBUG 2722 --- [ main] o.s.b.w.s.f.OrderedRequestContextFilter : Filter 'requestContextFilter' configured for use2019 -03 -19 10 :35 :43.665 DEBUG 2722 --- [ main] .s.b.w.s.f.OrderedHiddenHttpMethodFilter : Filter 'hiddenHttpMethodFilter' configured for use2019 -03 -19 10 :35 :43.665 DEBUG 2722 --- [ main] s.b.w.s.f.OrderedCharacterEncodingFilter : Filter 'characterEncodingFilter' configured for use2019 -03 -19 10 :35 :43.665 DEBUG 2722 --- [ main] o.s.b.w.s.f.OrderedFormContentFilter : Filter 'formContentFilter' configured for use2019 -03 -19 10 :35 :43.890 INF O 2722 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019 -03 -19 10 :35 :44.111 DEBUG 2722 --- [ main] ConditionEvaluationReportLoggingListener : ============================ CONDITIONS EVALUATION REPORT ============================ Positive matches: ----------------- CodecsAutoConfiguration matched: - @ConditionalOnClass found required class 'org.springframework.http.codec.CodecConfigurer' (OnClassCondition) CodecsAutoConfiguration.JacksonCodecConfiguration matched: - @ConditionalOnClass found required class 'com.fasterxml.jackson.databind.ObjectMapper' (OnClassCondition) 省略... Negative matches: ----------------- ActiveMQAutoConfiguration: Did not match: - @ConditionalOnClass did not find required class 'javax.jms.ConnectionFactory' (OnClassCondition) AopAutoConfiguration: Did not match: - @ConditionalOnClass did not find required class 'org.aspectj.lang.annotation.Aspect' (OnClassCondition) 省略... Exclusions: ----------- None Unconditional classes: ---------------------- org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration org.springframework.boot.autoconfigure.inf o.ProjectInf oAutoConfiguration 2019 -03 -19 10 :35 :44.160 INF O 2722 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019 -03 -19 10 :35 :44.164 INF O 2722 --- [ main] c.j.l.s.chapter10.Chapter10Application : Started Chapter10Application in 2.179 seconds (JVM running for 2.558 )2019 -03 -19 10 :36 :02.294 INF O 2722 --- [nio-8080 -exec-1 ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2019 -03 -19 10 :36 :02.294 INF O 2722 --- [nio-8080 -exec-1 ] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2019 -03 -19 10 :36 :02.300 INF O 2722 --- [nio-8080 -exec-1 ] o.s.web.servlet.DispatcherServlet : Completed initialization in 6 ms2019 -03 -19 10 :36 :02.340 INF O 2722 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : inf o(訊息):123 2019 -03 -19 10 :36 :02.342 WARN 2722 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : warn(警告):123 2019 -03 -19 10 :36 :02.342 ERROR 2722 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : error(錯誤):123 2019 -03 -19 10 :36 :02.342 ERROR 2722 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : fatal(致命):123
可以看到多輸出了很多的資訊,但是在最後自己的應用Log依舊是INFO等級的,這就是「核心Logger(包含嵌入式容器、hibernate、spring)會輸出更多內容,但是你自己應用的日誌並不會輸出為DEBUG級別。」這句話的意思。
文件輸出 Spring Boot預設配置只會輸出到控制台,並不會記錄到文件中,但是我們通常生產環境使用時都需要以文件方式記錄。
若要增加文件輸出,需要在application.properties中配置logging.file或logging.path屬性。
logging.file,設置文件,可以是絕對路徑,也可以是相對路徑。如:logging.file=my.log
logging.path,設置目錄,會在該目錄下建立spring.log文件,並寫入日誌內容,如:logging.path=/var/log
註:二者不能同時使用,若同時使用,則只有logging.file生效,預設情況下,日誌文件的大小達到10MB時會截斷,產生新的日誌文件,預設級別為:ERROR、WARN、INFO
修改 application.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 2019 -03 -19 11 :04 :31.532 INF O 2807 --- [main] c.j.l.s.chapter10.Chapter10Application : Starting Chapter10Application on localhost with PID 2807 (/Users/morose/Documents/workspace-SpringBoot/chapter-10 /target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-10 )2019 -03 -19 11 :04 :31.536 INF O 2807 --- [main] c.j.l.s.chapter10.Chapter10Application : No active profile set, falling back to default profiles: default2019 -03 -19 11 :04 :32.588 INF O 2807 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2019 -03 -19 11 :04 :32.625 INF O 2807 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2019 -03 -19 11 :04 :32.626 INF O 2807 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0 .16 ]2019 -03 -19 11 :04 :32.638 INF O 2807 --- [main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/morose/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]2019 -03 -19 11 :04 :32.751 INF O 2807 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2019 -03 -19 11 :04 :32.751 INF O 2807 --- [main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1150 ms2019 -03 -19 11 :04 :33.027 INF O 2807 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019 -03 -19 11 :04 :33.281 INF O 2807 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019 -03 -19 11 :04 :33.284 INF O 2807 --- [main] c.j.l.s.chapter10.Chapter10Application : Started Chapter10Application in 2.061 seconds (JVM running for 2.486 )2019 -03 -19 11 :04 :43.352 INF O 2807 --- [http-nio-8080 -exec-1 ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2019 -03 -19 11 :04 :43.353 INF O 2807 --- [http-nio-8080 -exec-1 ] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2019 -03 -19 11 :04 :43.359 INF O 2807 --- [http-nio-8080 -exec-1 ] o.s.web.servlet.DispatcherServlet : Completed initialization in 6 ms2019 -03 -19 11 :04 :43.392 INF O 2807 --- [http-nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : inf o(訊息):123 2019 -03 -19 11 :04 :43.394 WARN 2807 --- [http-nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : warn(警告):123 2019 -03 -19 11 :04 :43.395 ERROR 2807 --- [http-nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : error(錯誤):123 2019 -03 -19 11 :04 :43.395 ERROR 2807 --- [http-nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : fatal(致命):123
級別控制 在Spring Boot中只需要在application.properties中進行配置完成日誌記錄的級別控制。
配置格式:logging.level.*=LEVEL
logging.level:日誌級別控制前綴,*為包名或Logger名 LEVEL:選項TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF 舉例:
com.jj.learning.springboot.chapter10.controller logging.level.com.jj=DEBUG:com.jj包下所有class以DEBUG級別輸出 logging.level.root=WARN:root日誌以WARN級別輸出
修改 application.properties
1 2 3 4 logging.level.root=WARN logging.level.com.jj=DEBUG
1 2 3 4 5 6 7 8 9 10 11 12 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.3 .RELEASE) 2019 -03 -19 10 :54 :01.433 INF O 2783 --- [ main] c.j.l.s.chapter10.Chapter10Application : Starting Chapter10Application on localhost with PID 2783 (/Users/morose/Documents/workspace-SpringBoot/chapter-10 /target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-10 )2019 -03 -19 10 :54 :01.435 DEBUG 2783 --- [ main] c.j.l.s.chapter10.Chapter10Application : Running with Spring Boot v2.1.3 .RELEASE, Spring v5.1.5 .RELEASE2019 -03 -19 10 :54 :01.436 INF O 2783 --- [ main] c.j.l.s.chapter10.Chapter10Application : No active profile set, falling back to default profiles: default2019 -03 -19 10 :54 :03.184 INF O 2783 --- [ main] c.j.l.s.chapter10.Chapter10Application : Started Chapter10Application in 2.15 seconds (JVM running for 2.579 )
1 2 3 4 5 2019 -03 -19 10 :56 :54.537 DEBUG 2783 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : debug(調試):123 2019 -03 -19 10 :56 :54.539 INF O 2783 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : inf o(訊息):123 2019 -03 -19 10 :56 :54.539 WARN 2783 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : warn(警告):123 2019 -03 -19 10 :56 :54.539 ERROR 2783 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : error(錯誤):123 2019 -03 -19 10 :56 :54.539 ERROR 2783 --- [nio-8080 -exec-1 ] c.j.l.s.c.c.LoggerDemoController : fatal(致命):123
可以看到日誌輸出的等級為包含Debug以上的日誌
自定義日誌配置 由於日誌服務一般都在ApplicationContext建立前就初始化了,它並不是必須通過Spring的配置文件控制。因此通過系統屬性和傳統的Spring Boot外部配置文件依然可以很好的支持日誌控制和管理。
根據不同的日誌系統,你可以按如下規則組織配置文件名,就能被正確加載:
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)
自定義輸出格式 在Spring Boot中可以通過在application.properties配置如下參數控制輸出格式:
logging.pattern.console:定義輸出到控制台的樣式(不支持JDK Logger)
logging.pattern.file:定義輸出到文件的樣式(不支持JDK Logger)
註:以上參考了程序猿DD-翟永超 的 Spring Boot日志管理 文章。