淺談SpringBoot對日誌框架的使用

        java領域存在多種日誌框架,目前常用的日誌框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul等等。居於性能的考慮,日誌的抽象層我選擇SLF4j,日誌實現我選擇Logback。

       首先,少了不JAR包

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

日誌級別由高到低,代碼如下:

//記錄器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
	//System.out.println();
	//日誌的級別;
	//由低到高   trace<debug<info<warn<error
	//可以調整輸出的日誌級別;日誌就只會在這個級別以以後的高級別生效
	logger.trace("這是trace日誌...");
	logger.debug("這是debug日誌...");
	//SpringBoot默認給我們使用的是info級別的,沒有指定級別的就用SpringBoot默認規定的級別;root級別
	logger.info("這是info日誌...");
	logger.warn("這是warn日誌...");
	logger.error("這是error日誌...");

}

配置日誌的輸出格式及日誌文件的保存路徑

logging.level.com.jalor=trace
#spring.profiles.active=dev

#logging.path=
# 不指定路徑在當前項目下生成springboot.log日誌
# 可以指定完整的路徑;
#logging.file=G:/springboot.log
# 在當前磁盤的根路徑下創建spring文件夾和裏面的log文件夾;使用?spring.log 作爲默認文件
logging.path=/spring/log

#  在控制檯輸出的日誌的格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
# 指定文件中日誌輸出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n

應該需求及場景,需要在不同環境下按照不同的格式輸出日誌。此時,需要我們開發人員自己定義logback.xml配置文件來指定,但程序啓動時logback.xml將被日誌框架所識別,並無法Profile高級功能。建議命名爲logback-spring.xml,必需包含logback關鍵字,代碼片段如下:

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--
日誌輸出格式:
%d表示日期時間,
%thread表示線程名,
%-5level:級別從左顯示5個字符寬度
%logger{50} 表示logger名字最長50個字符,否則按照句點分割。 
%msg:日誌消息,
%n是換行符
-->
<layout class="ch.qos.logback.classic.PatternLayout">
    <springProfile name="dev">
	<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
    </springProfile>
    <springProfile name="!dev">
	<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
    </springProfile>
</layout>
</appender>

說到這裏,可能有人會問profile爲何物,我們簡單回顧一下。

一個SpringBoot項目從開發到最終的發佈基本上都會有幾個環境,開發環境dev、測試環境test、生產環境etc。每切換一個環境我們就要在application.properties中修改配置,這樣會很麻煩。因此,我們需要準備多個application.properties文件,例如:application-dev.properties、application-test.properties、application-etc.properties等。每個*.properties文件都有自己的配置,那如何切換呢?在application.properties中配置如下代碼。

spring.profiles.active=dev

淺談至此,如有疑問請留言,謝謝!

更多更全案例,百度一下:

嘉樂博客系統

www.syjalor.com

www.blog.syjalor.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章