SpringBoot專案的logback日誌配置(包括列印mybatis的sql語句)
關於logback日誌的詳解見這位仁兄的部落格:Spring Boot-日誌配置(超詳細)
我在這就開門見山直接介紹我們專案日誌的配置使用吧!~
1、基本介紹
預設情況下,Spring Boot專案就會用Logback來記錄日誌,並用INFO級別輸出到控制檯。如下圖:
實際開發中我們不需要直接新增logback日誌依賴。
你會發現 spring-boot-starter 其中包含了 spring-boot-starter-logging,該依賴內容就是 Spring Boot 預設的日誌框架 logback。
日誌級別從低到高分為:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
只能展示大於或等於設定的日誌級別的日誌;也就是說springboot預設級別為INFO,那麼在控制檯展示的日誌級別只有INFO 、WARN、ERROR、FATAL
2、logback.xml日誌檔案配置
根據不同的日誌系統,你可以按如下規則組織配置檔名,就能被正確載入:
- 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),命名為logback-spring.xml的日誌配置檔案,spring boot可以為它新增一些spring boot特有的配置項(下面會提到)。
預設的命名規則,並且放在 src/main/resources 下如果你即想完全掌控日誌配置,但又不想用logback.xml作為Logback配置的名字,application.yml可以通過logging.config屬性指定自定義的名字:
logging.config=classpath:logging-config.xml
這裡寫程式碼片雖然一般並不需要改變配置檔案的名字,但是如果你想針對不同執行時Profile使用不同的日誌配置,這個功能會很有用。
我們專案的日誌配置內容:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 此xml在spring-boot-1.5.3.RELEASE.jar裡 --> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> <!-- 開啟後可以通過jmx動態控制日誌級別(springboot Admin的功能) --> <!--<jmxConfigurator/>--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<File>/home/hfw-client/hfw_log/stdout.log</File>--> <File>D:/log/hfw-client/hfw_log/stdout.log</File> <encoder> <pattern>%date [%level] [%thread] %logger{60} [%file : %line] %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 新增.gz 歷史日誌會啟用壓縮 大大縮小日誌檔案所佔空間 --> <!--<fileNamePattern>/home/hfw-client/hfw_log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern>--> <fileNamePattern>D:/log/hfw-client/hfw_log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory><!-- 保留30天日誌 --> </rollingPolicy> </appender> <logger name="com.moerlong.hfw.dao" level="DEBUG" /> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> </configuration>
3、列印mybatis的sql語句
比較蠢的方法是直接把root標籤的level屬性改為DEBUG:
<root level="DEBUG"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root>
這個改為DEBUG則會列印最詳細的日誌,包括mybatis的sql語句(量太大建議開發測試時才用)
我們一般針對DAO的包進行DEBUG日誌設定:
<logger name="com.moerlong.hfw.dao" level="DEBUG" />
這樣的話,只打印SQL語句:
4、程式碼裡列印日誌
之前我們大多數時候自己在每個類建立日誌物件去列印資訊,比較麻煩:
private static final Logger logger = LoggerFactory.getLogger(YjServiceImpl.class); logger.error("xxx");
現在可以直接在類上通過 @Slf4j 標籤去宣告式註解日誌物件
先在pom.xml中新增依賴:
<!--@Slf4j自動化日誌物件-log--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version> </dependency>
然後就直接可以使用了:
@Slf4j @RestController public class HfwController { log.info(""); }
到此這篇關於SpringBoot專案的logback日誌配置(包括列印mybatis的sql語句)的文章就介紹到這了,更多相關SpringBoot logback日誌配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!