1. 程式人生 > >SpringBoot基礎系列-使用日誌

SpringBoot基礎系列-使用日誌

原創作品,可以轉載,但是請標註出處地址:https://www.cnblogs.com/V1haoge/p/9996897.html

SpringBoot基礎系列-使用日誌

概述

SpringBoot使用Common Logging進行日誌操作,Common Logging是一個日誌功能框架,沒有具體的實現,具體的日誌操作需要具體的日誌框架來實現。
常用的日誌框架包括:JUL(Java Util Logging)、Log4J2、Logback。
預設情況下,使用的是Logback作為底層實現。

日誌格式

SpringBoot的預設的日誌格式如下:

2018-11-21 10:23:34.966  INFO 12588 --- [  restartedMain] c.e.s.SpringbootdemoApplication          : Starting SpringbootdemoApplication on PC-20170621WOWM with PID 12588 (F:\Code\etongdai\etongdai-reactor\springbootdemo\target\classes started by Administrator in F:\Code\etongdai\etongdai-reactor\springbootdemo)
2018-11-21 10:23:34.968  INFO 12588 --- [  restartedMain] c.e.s.SpringbootdemoApplication          : No active profile set, falling back to default profiles: default
2018-11-21 10:23:34.968 DEBUG 12588 --- [  restartedMain] o.s.boot.SpringApplication               : Loading source class com.example.springbootdemo.SpringbootdemoApplication

格式為:(date) (time) (log level) (process Id) --- ([thread name]) (logger name) : (log message)

日誌級別

  • ERROR(FATAL也屬此類)
  • WARN
  • INFO
  • DEBUG
  • TRACE

    日誌輸出

    控制檯輸出

    預設情況下,SpringBoot的日誌就是輸出控制檯,而且預設是INFO級別,也就是ERROR、WARN、INFO這三個級別的日誌會被輸出。

    設定日誌級別

    命令列引數
java -jar xxx.jar --debug
application.properties
debug=true

彩色輸出(無甚用處)

檔案輸出

設定日誌輸出檔案

application.properties

logging.file=xxx.log
logging.path=/log/

前者用於指定輸出日誌的檔案,後者用於指定日誌輸出檔案的位置,其名稱為預設的spring.log。

設定日誌檔案大小

預設情況下當日志文件達到10M大小的時候就會輪轉(重新開始),舊的日誌內容預設會自動存檔,而且自動存檔預設是無限期的,可以使用如下配置:

#設定日誌檔案的最大尺寸,大於該尺寸,日誌開始輪轉
logging.file.max-size=20MB
#設定存檔日誌檔案的最大容量
logging.file.max-history=100

日誌級別

SprngBoot中集成了多個模組,我們可以對其分別進行日誌級別設定:

#設定root級日誌級別
logging.level.root=WARN
#設定spring web框架的日誌級別
logging.level.org.springframework.web=DEBUG
#設定spring中整合的hibernate的日誌級別
logging.level.org.hibernate=ERROR

日誌組

為避免針對各個系統進行日誌設定,提供了日誌組,將相同日誌級別的系統模組設定成一組,統一設定一致的日誌級別,SpringBoot提供了預設的日誌組,我們也能自定義日誌組:

自定義日誌組

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat

通過如下配置統一設定日誌級別:

logging.level.tomcat=TRACE

SpringBoot內建日誌組

|序號|Name|Loggers|
|1|web|org.springframework.core.codec, org.springframework.http, org.springframework.web|
|2|sql|org.springframework.jdbc.core, org.hibernate.SQL|
通過Name值即可統一設定其中包含的Loggers的日誌級別

logging.level.web=DEBUG

定製Log配置

SpringBoot底層支援多種日誌實現,可以通過新增某種日誌系統的jar包的方式來使其自動啟用可用(SpringBoot的自動配置功能的作用),然後可以通過在classpath根路徑下或者是logging.config配置屬性(在application.properties中配置)指定的目錄下自定義日誌配置檔案來進行深度定製。
針對不同的日誌底層實現,需要自定義不同名稱的日誌配置檔案
|序號|Logging System|fileName|
|1|Logback|logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy|
|2|Log4j2|log4j2-spring.xml or log4j2.xml|
|3|JDK (Java Util Logging)|logging.properties|
推薦使用*-spring.xml格式命名的配置檔案作為自定義日誌配置檔名

擴充套件Logback

Spring Boot包含了許多可以幫助進行高階配置的Logback擴充套件。可以在logback-spring.xml配置檔案中使用這些擴充套件。

基於profile的日誌配置

可以配置在某個profile處於啟用時使用的日誌配置

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

Environment屬性

通過

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>