天天看點

html列印日志_Spring Boot日志使用

作者:FeelRose

https://www.cnblogs.com/xuqp/p/9524342.html

Spring Boot日志關系

這個是Spring Boot的啟動器,我們點選

spring-boot-starter

這個

spring-boot-starter-logging

就是Spring Boot用來做日志功能的

底層依賴關系

html列印日志_Spring Boot日志使用

通過這張圖我們能總結出

  1. Spring Boot底層也是使用slf4j+logback的方式進行日志記錄
  2. Spring Boot也把其他的日志都替換成了slf4j;

那麼Spring Boot是如何将這些日志都替換成slf4j的呢?我們找到其中的一個

jcl-over-slf4j

html列印日志_Spring Boot日志使用

我們可以看到裡面有個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級别呢,依次點選檔案目錄下的這些檔案

html列印日志_Spring Boot日志使用
html列印日志_Spring Boot日志使用

從圖中我們能看出,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日志...");
}
           

現在我們啟動這個測試類

html列印日志_Spring Boot日志使用

可以看出隻列印出了info及以後的日志記錄,也印證了前面所說的

修改預設配置

接下來我們來修改Spring Boot的預設配置

  1. 修改預設級别
  2. 輸出日志檔案
  3. 修改列印格式

以下代碼均在

application.properties

檔案中寫入

修改預設級别

logging.level.com.atguigu=trace
           

這行代碼指定了Spring Boot會輸出trace及以後級别的日志記錄,level以後的路徑是目前項目的路徑

html列印日志_Spring Boot日志使用

輸出日志檔案

輸出日志有兩種方法

  1. logging.file
  2. 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生效

修改列印格式

我們可以自定義日志輸入的格式同樣有兩種方法

  1. logging.pattern.console
  2. logging.pattern.file
logging.pattern.console

修改控制台輸出日志格式

Copy