Spring Boot對全部內部日誌記錄使用了Commons Logging,可是底層日誌實現是開放的。能夠爲 Java Util日誌、Log4J2和Logback。對於每種日誌都預先配置爲使用控制檯輸出和可選的文件輸出。默認爲Logbackweb
經過將相應的庫添加到classpath能夠激活各類日誌系統,而後在classpath根目錄下提供合適的配置文件能夠進一步定製日誌系統,配置文件也能夠經過Spring Environment的logging.config屬性指定。spring
如下文件會根據你選擇的日誌系統進行加載:api
日誌系統 | 定製配置 |
---|---|
Logback | logback-spring.xml ,logback-spring.groovy ,logback.xml 或logback.groovy |
Log4j | log4j.properties 或log4j.xml |
Log4j2 | log4j2-spring.xml 或log4j2.xml |
JDK (Java Util Logging) | logging.properties |
注 若是可能的話,建議你使用-spring
變種形式定義日誌配置(例如,使用logback-spring.xml
而不是logback.xml
)。若是你使用標準的配置路徑,Spring可能不可以徹底控制日誌初始化。tomcat
注 Java Util Logging從可執行jar運行時會致使一些已知的類加載問題,咱們建議儘量不使用它。app
如下是從Spring Envrionment
轉換爲System properties的一些有助於定製的配置屬性:ide
Spring Environment | System Property | Comments |
---|---|---|
logging.exception-conversion-word |
LOG_EXCEPTION_CONVERSION_WORD |
記錄異常使用的關鍵字 |
logging.file |
LOG_FILE |
若是指定就會在默認的日誌配置中使用 |
logging.path |
LOG_PATH |
若是指定就會在默認的日誌配置中使用 |
logging.pattern.console |
CONSOLE_LOG_PATTERN |
日誌輸出到控制檯(stdout)時使用的模式(只支持默認的logback設置) |
logging.pattern.file |
FILE_LOG_PATTERN |
日誌輸出到文件時使用的模式(若是LOG_FILE啓用,只支持默認的logback設置) |
logging.pattern.level |
LOG_LEVEL_PATTERN |
用來渲染日誌級別的格式(默認%5p ,只支持默認的logback設置) |
PID |
PID |
當前的處理進程(process)ID(可以找到,且尚未用做OS環境變量) |
全部支持的日誌系統在解析配置文件時都能獲取系統屬性的值,具體能夠參考spring-boot.jar
中的默認配置。spring-boot
一份史詩級配置idea
<Configuration status="INFO" monitorInterval="30"> <Properties> <Property name="logpath">/home/logs/log/dev</Property> </Properties> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="[%d][%-5p][%t] %m (%F:%L)%n" /> </Console> <RollingFile name="debug" fileName="${logpath}/debug/erp_debug.log" filePattern="${logpath}/debug/erp_debug_%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout pattern="[%d][%-5p][%t] %m (%F:%L)%n" /> <Policies> <TimeBasedTriggeringPolicy interval="24" modulate="true"/> <SizeBasedTriggeringPolicy size="50 MB"/>\ </Policies> <DefaultRolloverStrategy max="30"> <Delete basePath="${logpath}/debug" maxDepth="1"> <IfFileName glob="erp_debug_*.log"/> <IfLastModified age="15d"/> </Delete> </DefaultRolloverStrategy> </RollingFile> <RollingFile name="info" fileName="${logpath}/info/erp_info.log" filePattern="${logpath}/info/erp_info_%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout pattern="[%d][%-5p][%t] %m (%F:%L)%n" /> <Policies> <TimeBasedTriggeringPolicy interval="24" modulate="true"/> <SizeBasedTriggeringPolicy size="50 MB"/>\ </Policies> <DefaultRolloverStrategy max="30"> <Delete basePath="${logpath}/info" maxDepth="1"> <IfFileName glob="erp_info_*.log"/> <IfLastModified age="15d"/> </Delete> </DefaultRolloverStrategy> </RollingFile> <RollingFile name="warn" fileName="${logpath}/warn/erp_warn.log" filePattern="${logpath}/warn/erp_warn_%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout pattern="[%d][%-5p][%t] %m (%F:%L)%n" /> <Policies> <TimeBasedTriggeringPolicy interval="24" modulate="true"/> <SizeBasedTriggeringPolicy size="50 MB"/>\ </Policies> <DefaultRolloverStrategy max="30"> <Delete basePath="${logpath}/warn" maxDepth="1"> <IfFileName glob="erp_warn_*.log"/> <IfLastModified age="15d"/> </Delete> </DefaultRolloverStrategy> </RollingFile> <RollingFile name="error" fileName="${logpath}/error/erp_error.log" filePattern="${logpath}/error/erp_error_%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> <PatternLayout pattern="[%d][%-5p][%t] %m (%F:%L)%n" /> <Policies> <TimeBasedTriggeringPolicy interval="24" modulate="true"/> <SizeBasedTriggeringPolicy size="50 MB"/>\ </Policies> <DefaultRolloverStrategy max="30"> <Delete basePath="${logpath}/error" maxDepth="1"> <IfFileName glob="erp_error_*.log"/> <IfLastModified age="15d"/> </Delete> </DefaultRolloverStrategy> </RollingFile> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console"/> <AppenderRef ref="debug"/> <AppenderRef ref="info"/> <AppenderRef ref="warn"/> <AppenderRef ref="error"/> </Root> </Loggers> </Configuration>
各個文件輸出到不一樣級別的目錄spa
設置最大保存時間爲15天debug
每一個文件最大50M
在properties文件添加以下配置:
server.tomcat.basedir=/home/logs/log-api/tomcat-logs server.tomcat.accesslog.enabled=true server.tomcat.accesslog.pattern=%t %a "%r" %s %D (%D ms) server.use-forward-headers=true
使用lombok的@Slf4j 註解,省去配置聲明log的繁瑣,提升開發效率。
Grep Console 自定義設置控制檯輸出顏色,這樣控制檯就能比較明顯的看到警告或者錯誤的信息,方便查找問題
視頻地址:https://space.bilibili.com/313762729/#/