@Conditional派生注解
@Conditional注解條件成立,才給容器中添加元件。而我們怎麼知道那些自動配置類生效呢?我們可以在application.properties中寫入
debug=true
,控制台會列印自動配置報告。這樣我們就能很友善地得知有哪些自動配置類生效了。
springboot日志架構
一開始,還沒有日志架構的時候,程式猿們都是用syso(System.out.println)将有用的資訊列印出來,但由于syso過于分散,不易管理,是以有了架構。又因為版本更新,導緻API不同,又麻煩了,是以有了接口。目前springboot使用的日志接口是slf4j,實作接口的是logback。需要注意的是,有了統一的接口,配置檔案不統一;使用logback就要使用logback的配置檔案。
但是,一個項目可能使用不同的日志接口。是以有了如下辦法:
- 将其他接口包排除
- 用中間包代替
- 選擇slf4j實作類
在我們自己引入架構時,記住要把這個架構自己的日志架構删除,springboot會自動适配,因為springboot引入了所有主流日志架構接口的中間包。
如果要使用各個實作日志架構的配置檔案,隻需将如下配置檔案放在類路徑下:
架構 | 配置檔案 |
---|---|
logback | logback-spring.xml,logback-spring.groovy,logback.xml,logback.groovy |
log4j2 | log4j2-spring.xml,log4j2.xml |
JUL | logging.properties |
如果配置檔案名為logback-spring.xml,就會繞過日志架構由springboot加載。這時,我們就可以使用springboot的profile功能。
slf4j的使用
package com.example;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class HelloworldApplicationTests {
//記錄器
Logger logger=LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
//日志的級别:trace<debug<info<warn<error
//slf4j有對日志的過濾功能,而且是按照級别進行過濾
//springboot預設過濾info以下的日志
logger.trace("這是trace");
logger.debug("這是debug");
logger.info("這是info");
logger.warn("這是warn");
logger.error("這是error");
}
}
#logging.level.com.example=trace
#設定過濾級别
#logging.file.name=springboot.log
#将日志寫在springboot.log中并生成在項目路徑下
#logging.file.name=D:/springboot.log
#将檔案生成在D盤根目錄下
#logging.file.path=、spring/log
#在目前磁盤根路徑下建立spring檔案夾下的log檔案夾,并放入日志檔案,預設檔案名為spring.log