@ConditionalOnJava
怎麼知道哪些自動配置類生效
在.properties文件中編寫
debug=true
控制檯打印自動配置報告,Positive matches:自動配置類啓用,Negative matches爲沒有啓用
Spring Boot與日誌
日誌框架、日誌配置
統一的接口層:日誌門面(日誌的抽象層)
JUL(java.util.logging)、JCL(Apache/Jakarta Commons Logging)、Jboss-logging、logback、log4j、log4j2、slf4j(Simple Logging Facade for Java)
Spring boot使用JCL,spring-boot-starter-logging採用slf4j+logback的形式
日誌門面:SLF4j
日誌實現:Logback
LogFactory = new SLF4JLogFactory()
- SpringBoot底層也是使用slf4j+logback的方式進行日誌記錄
- SpringBoot也把其他的日誌都替換成slf4j
- 中間替換包,如jcl-over-slf4j
- 如果引入其他框架,需要移除框架的默認日誌依賴
spring框架用的是commons-logging
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
== springboot能自動適配所有日誌,而且底層使用slf4j+logback的方式記錄日誌,引入其他框架時,排除依賴的日誌框架==
日誌的使用
- 默認配置
日誌輸出格式:
%d表示日期時間,
%thread表示線程名,
%-5level:級別從左顯示5個字符寬度
%logger{50} 表示logger名字最長50個字符,否則按照句點分割。
%msg:日誌消息,
%n是換行符
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
# 配置日誌級別
logging.level.com.qtu.zp = trace
# 輸出到指定目錄
#在當前磁盤的根路徑下創建spring/log文件夾
#logging.path= /spring/log
#輸出到指定的文件中
#不指定路徑,默認在當前項目下創建,
#可以指定完整路徑路徑
#logging.file=G:/zp.log
#日誌在控制檯輸出的格式
logging.pattern.console=
#指定文件中日誌輸出格式
logging.pattern.file=
public void contextLoads() {
// log:日誌, logger:記錄器
// 日誌級別:由低到高,可以調整輸出砈日誌級別
logger.trace("這是trace日誌");
logger.debug("this is debug log");
// 默認使用info級別
// 設置日誌級別:在配置文件中編寫logging.level.com.qtu.zp = trace,root級別
logger.info("this is info");
logger.warn("this is warning logger");
logger.error(("this is error logger"));
}
```