SpringBoot系列之日志框架使用教程


基於上篇博客,SpringBoot系列之日志框架介紹及其原理簡介博客之后,本博客可以對日志框架的具體使用做一個比較詳細的描述,以此作為一篇使用的手冊,以此幫助學習Springboot者

@

1、SpringBoot日志級別

1)、日志級別簡介

簡介一下日志級別,按照從低到高排序:trace < debug < info < warn < error,eg:假如日志級別為info,則只會打印info級別及其高級別的日志,所以在項目中,可以通過調高日志級別,打少點日志,反之,想打多點就調低日志級別

2)、默認日志級別

Springboot支持的日志級別有:TRACE, DEBUG, INFO, WARN, ERROR, FATAL, or OFF,然后默認的級別是info,寫一個簡單的測試類驗證這個問題:

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootLoggerApplicationTests {

	Logger LOG = LoggerFactory.getLogger(this.getClass());

	@Test
	void contextLoads() {
		LOG.trace("this is trace log infomation....");
		LOG.debug("this is debug log infomation....");
		LOG.info("this is info log infomation....");
		LOG.warn("this is warn log infomation....");
		LOG.error("this is error log infomation....");
	}

}

日志打印:

2019-11-16 18:50:07.513  INFO 19152 --- [           main] c.e.s.s.SpringbootLoggerApplicationTests : this is info log infomation....
2019-11-16 18:50:07.513  WARN 19152 --- [           main] c.e.s.s.SpringbootLoggerApplicationTests : this is warn log infomation....
2019-11-16 18:50:07.513 ERROR 19152 --- [           main] c.e.s.s.SpringbootLoggerApplicationTests : this is error log infomation....

可以看出只打印了info及其高級別的日志,可是我們並沒有配置什么,說明了Springboot已經做了自動配置,默認日志級別為info的

3)、配置日志級別

Springboot日志級別可以設置root根級的,也可以設置對應包下面的日志級別,如下示例:

# root日志級別為info
logging.level.root=info
# 指定org.springframework.web包級別為debug
logging.level.org.springframework.web=debug
# 指定org.hibernate包級別為error
logging.level.org.hibernate=error
# 指定com.example.springboot.springbootlogger包下面的統一用debug級別
logging.level.com.example.springboot.springbootlogger=debug

4)、日志分組設置

Springboot還提供了日志級別進行分組設置的功能,官方說法是“能夠將相關記錄器組合在一起,以便可以同時配置它們,這通常很有用。例如,您通常可以更改所有 Tomcat 相關記錄器的日志記錄級別,但您無法輕松記住頂級包。”,意思就是我們可以自己定義一個分組,然后自己設置整個分組的級別,主要原因是我們很難記得那些包名

# 日志分組設置
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
# 設置整個組的級別為trace
logging.level.tomcat=TRACE

Springboot已經有的分組,沒有的分組就得自己設置

Name loggers
web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener

2、SpringBoot日志格式設置

1)、默認格式原理簡介

從前面的學習可以知道,Springboot默認使用logback進行日志打印的,所以可以在Springboot的jar包里找到默認的日志格式配置org.springframework.book.logging.logback的包下面找到default.xml,也就是我們不在application.properties配置的話,就加載默認的格式
在這里插入圖片描述

2)、默認日志格式

2019-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2019-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
  • 日期和時間:毫秒精度,易於排序。
  • 日志級別:錯誤、警告、信息、調試或跟蹤。
  • 進程 ID。
  • 分隔符,用於區分實際日志消息的開頭。
  • 線程名稱:以方形括號括起來(控制台輸出可能截斷)。
  • 記錄器名稱:這通常是源類名稱(通常縮寫)。
  • 日志消息。

3)、自定義日志格式

application.perperties也可以加上自己的自定義配置,本博客使用boot2.2.1

# 定義控制台日志打印格式
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

注意,日志格式介紹:

  • %d:日期;
  • %thread:線程名;
  • %-5level:日志級別從左顯示5個字符長度,列如:DEBUG;
  • %logger{50}:java類名,例如:com.muses.taoshop.MyTest,50表示字符長度;
  • %msg:日志內容;%n:換行

4)、日志顏色設置

對於在控制台打印的日志,還可以加上必要的顏色,具體用法是開啟spring.output.ansi.enabled,ANSI配置可以參考官方文檔:https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/api//org/springframework/boot/ansi/AnsiOutput.Enabled.html

其實主要如下屬性:

  • ALWAYS:啟用ANSI彩色輸出。
  • DETECT:嘗試檢測ANSI着色功能是否可用。
  • NEVER:禁用ANSI彩色輸出。

application.properties開啟

spring.output.ansi.enabled=always

具體用法是%clr(${param}){color}

logging.pattern.console=%clr(%d{yyyy-MM-dd HH24:mm:ss.SSS}){green} {%thread} %-5level %logger{50} - %msg%n

在這里插入圖片描述

Springboot支持的顏色有:

  • blue
  • cyan
  • faint
  • green
  • magenta
  • red
  • yellow

3、日志文件歸檔

而對於日志歸檔文件的,我們也可以通過源碼看到默認配置為10M的,也就是文件超過10M就自動進行歸檔,不需要我們自己配置
在這里插入圖片描述

在這里插入圖片描述
也可以在application.properties加上默認的配置

# 可以指定目錄,也可以不指定,不指定的情況就在項目根目錄下面創建日志文件
logging.file.name=springboot.log
# window系統在當前項目的磁盤根目錄創建springboot/log文件夾,默認日志文件是spring.log
#logging.file.path=/springboot/log

logging.file.name=springboot.log,可以指定目錄,也可以不指定,不指定的情況就在項目根目錄下面創建日志文件
logging.file.path=/springboot/log,window系統在當前項目的磁盤根目錄創建springboot/log文件夾,默認日志文件是spring.log

4、logging其它參數配置

對於Springboot怎么配置日志參數,具體可以參考Springboot官網,引用官網的logging配置,官網鏈接:https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/spring-boot-features.html#boot-features-logging
在這里插入圖片描述

5、開啟日志調試模式

啟用調試模式后,將配置一系列核心記錄器(embedded container, Hibernate, and Spring Boot)以輸出更多信息。啟用調試模式不會將應用程序配置為使用 DEBUG 級別,記錄所有消息。

$ java -jar myapp.jar --debug

當然也可以在配置文件庫開啟,將debug設置為TRUE就可以

debug=true

ok,本博客只是對日志框架的基本使用進行介紹,詳細的比如自定義logback配置等等,請參考我這個專欄的系列博客:https://smilenicky.blog.csdn.net/category_9195353.html

附錄:
logging manual:SpringBoot日志官方手冊
example source:日志配置github代碼下載鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM