作者:FeelRose
https://www.cnblogs.com/xuqp/p/9524342.html
Spring Boot日志關系
這個是Spring Boot的啟動器,我們點選
spring-boot-starter
這個
spring-boot-starter-logging
就是Spring Boot用來做日志功能的
底層依賴關系
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yN3M2NlJzMldTO4MDMwAjZzQjYyUzY3MWY5YGZ4AjZ18CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
通過這張圖我們能總結出
- Spring Boot底層也是使用slf4j+logback的方式進行日志記錄
- Spring Boot也把其他的日志都替換成了slf4j;
那麼Spring Boot是如何将這些日志都替換成slf4j的呢?我們找到其中的一個
jcl-over-slf4j
我們可以看到裡面有個commons.logging,裡面實作的正是SLF4JLogFactory
@SuppressWarnings("rawtypes")
public abstract class LogFactory {
static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J = "http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j";
static LogFactory logFactory = new SLF4JLogFactory();
}
那麼我們如果要引入其它架構,一定要把這個架構的預設日志依賴移除掉。
Spring Boot用的是
commons-logging
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<exclusions>
<exclusion>
<groupId>commons-logginggroupId>
<artifactId>commons-loggingartifactId>
exclusion>
exclusions>
dependency>
SpringBoot能自動适配所有的日志,而且底層使用slf4j+logback的方式記錄日志,引入其他架構的時候,隻需要把這個架構依賴的日志架構排除掉即可;
日志使用
預設配置
Spring Boot預設幫我們配置好了日志;日志有五種級别,由低到高是
trace,可以調整輸出的日志級别;日志就隻會在這個級别及以後的進階别生效,Spring Boot預設給我們使用的是info級别的,沒有指定級别的就用SpringBoot預設規定的級别;root級别
為什麼也叫root級别呢,依次點選檔案目錄下的這些檔案
從圖中我們能看出,Spring Boot有個預設标簽
裡面指定的級别正是
INFO
,這也就是為什麼預設級别叫
root
級别,作為一個小知識點給大家擴充了一下,下面進入正題,我們在測試類中寫下以下代碼。
//記錄器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
logger.trace("這是trace日志...");
logger.debug("這是debug日志...");
//SpringBoot預設給我們使用的是info級别的,沒有指定級别的就用SpringBoot預設規定的級别;root級别
logger.info("這是info日志...");
logger.warn("這是warn日志...");
logger.error("這是error日志...");
}
現在我們啟動這個測試類
可以看出隻列印出了info及以後的日志記錄,也印證了前面所說的
修改預設配置
接下來我們來修改Spring Boot的預設配置
- 修改預設級别
- 輸出日志檔案
- 修改列印格式
以下代碼均在
application.properties
檔案中寫入
修改預設級别
logging.level.com.atguigu=trace
這行代碼指定了Spring Boot會輸出trace及以後級别的日志記錄,level以後的路徑是目前項目的路徑
輸出日志檔案
輸出日志有兩種方法
- logging.file
- logging.path
logging.file
輸出指定檔案名的日志,通過這個我們可以指定輸出的日志檔案名的名稱
logging.file=f:/springlog/springboot.log
我們會在這個路徑下生成一個叫springboot.log的日志,如果沒有指定路徑,會在目前項目下生成springboot.log日志
logging.path
在f盤下建立springlogpath檔案夾和裡面的log檔案;使用 spring.log 作為預設檔案
logging.path=f:/springlogpath
logging.file | logging.path | Example | Description |
---|---|---|---|
(none) | (none) | 隻在控制台輸出 | |
指定檔案名 | (none) | my.log | 輸出日志到my.log檔案 |
(none) | 指定目錄 | /var/log | 輸出到指定目錄的 spring.log 檔案中 |
如果都不指定,預設隻在控制台輸出,如果同時指定,隻有logging.file生效
修改列印格式
我們可以自定義日志輸入的格式同樣有兩種方法
- logging.pattern.console
- logging.pattern.file
logging.pattern.console
修改控制台輸出日志格式
Copy