springboot默認採用的是 slf4j+logback 的組合形式,日誌抽象層是 slf4j,日誌實現層是 logback,Spring Boot也提供對JUL、log4j2、Logback提供了默認配置。
SpringBoot默認日誌配置
1、SpringBoot默認配置好了日誌, 只要啓動 Spring Boot 項目就會在控制檯輸出日誌信息。
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootLoggingApplicationTests {
//日誌記錄器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
/**
* 1、日誌信息的級別:trace < debug < info < warn < error
* 2、springboot默認的日誌信息級別時info級別,也就是日誌 root 級別是 info級別,root級別是什麼,則只會打印 大於等於 root級別的日誌信息
* 3、可以在 application.properties 配置文件中修改當前項目的pacakge的 root 級別,沒有修改則默認使用springboot默認的root級別
* 4、也可以在 application.properties 修改 當前項目的 root 級別,這樣就就修改了項目引入的 jar 包的 root級別
*/
logger.trace("這是 trace 日誌信息");
logger.debug("這是 debug 日誌信息");
logger.info("這是 info 日誌信息");
logger.warn("這是 warn 日誌信息");
logger.error("這是 error 日誌信息");
}
}
2、修改默認日誌配置的root級別,在全局配置文件 application.properties 中修改
#修改當前項目的 package 下面的的日誌級別
logging.level.com.dss.springboot=debug
#修改整個項目的 root 級別,會影響項目引入的 jar 包的日誌級別,所以一般在項目中只修改 當前項目的 pacakge 下的root級別
logging.level.root=debug
3、修改默認日誌配置:
1)、修改日誌文件的輸出路徑:
可以在 application.properties 配置文件中進行配置,具體 枚舉 如下:
#指定日誌輸出到哪個文件中,指定之後,會在輸入日誌到當前項目的根路徑下的 springboot.log 文件中(這個文件名可以自己指定)
#如果指定的 文件不存在,則會自動創建文件,如果指定的文件存在,則會將日誌信息 追加 到已有的文件中
#這個配置也可以指定日誌文件輸出到 某個目類下,如: logging.file=E:/springboot.log
logging.file=springboot.log
#指定日誌輸出到哪個 path 下,這裏日誌會默認輸出在 文件名 爲 spring.log 的文件中
#指定path後,日誌會輸入出當前項目所在的磁盤根路徑下,例如:項目在D盤的一個文件夾中,則會在D盤根目錄下創建一個 /springboot/log 的文件夾,裏面有 spring.log 文件
logging.path=/springboot/log
2)、修改日誌的輸出格式:
# 日誌輸出格式說明:
# %d 輸出日期時間,
# %thread 輸出當前線程名,
# %-5level 輸出日誌級別,左對齊5個字符寬度
# %logger{50} 輸出全類名最長50個字符,超過按照句點分割
# %msg 日誌信息
# %n 換行符
#修改控制檯輸出的日誌格式(不會改變寫入到 日誌文件 中的日誌格式)
logging.pattern.console=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} - %msg%n
#修改輸入到日誌文件中的 日誌格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} >>> [%thread] >>> %-5level >>> %logger{50} >>> %msg%n
自定義springBoot日誌配置
1、要採用自定義的日誌配置,如果採用的是 logback 日誌,則需要在 類路徑 下加上 logback.xml 或者 logback-spring.xml 文件;當在 類路徑下加上 logback.xml 文件後,SpringBoot就不會使用它默認的日誌配置文件
2、在 resources 目錄下創建 logback.xml,文件內容與 平常的日誌配置文件 logback.xml一樣
3、啓動項目之後,logback.xml就會直接被日誌框架加載
4、也可以創建 logback-spring.xml 配置文件,配置項不會被日誌框架直接加載,而是由 SpringBoot 解析日誌配置文件,進而可以使用 SpringBoot 的 Profile 特殊配置,例如:
1)、把 logback.xml 重命名爲 logback-spring.xml,之後在文件內容裏找到輸出到控制檯的日誌格式:修改爲:
<!-- ch.qos.logback.core.ConsoleAppender 表示控制檯輸出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日誌輸出格式說明: %d 輸出日期時間 %thread 輸出當前線程名 %-5level 輸出日誌級別,左對齊5個字符寬度 %logger{50}
輸出全類名最長50個字符,超過按照句點分割 %msg 日誌信息 %n 換行符 -->
<layout class="ch.qos.logback.classic.PatternLayout">
<!--如果啓動的prifile是開發環境,則使用這個日誌輸出格式-->
<springProfile name="dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} === [%thread] === %-5level ==== %logger{50} - %msg%n</pattern>
</springProfile>
<!--如果啓動的prifile是不是開發環境,則使用這個日誌輸出格式-->
<springProfile name="!dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} >>> [%thread] >>> %-5level >>> %logger{50} - %msg%n</pattern>
</springProfile>
</layout>
</appender>
2)、在 application.properties 配置文件中,通過 spring.profiles.active = xxx,來配置啓動的是哪個prifile,就可以控制不同的日誌輸出格式
5、注意: Spring的Profile特殊配置,只能在logback-spring.xml文件中配置,如果自定義日誌配置文件是 logback.xml,加上 springProfile 標籤後,啓動項目就會報錯。