SpringBoot(三) SpringBoot中的日志配置


SLF4J

Spring Boot在所有內部日志中使用Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util LoggingLog4JLog4J2Logback。每種Logger都可以通過配置使用控制台或者文件輸出日志內容。

SLF4J——Simple Logging Facade For Java,它是一個針對於各類Java日志框架的統一Facade抽象。Java日志框架眾多——常用的有java.util.logginglog4jlogbackcommons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定義了統一的日志抽象接口,而真正的日志實現則是在運行時決定的——它提供了各類日志框架的binding。

Logback是log4j框架的作者開發的新一代日志框架,它效率更高、能夠適應諸多的運行環境,同時天然支持SLF4J。

默認情況下,Spring Boot會用Logback來記錄日志,並用INFO級別輸出到控制台。在運行應用程序和其他例子時,啟動項目輸出的日志文件就是。

日志輸出內容元素具體如下:

  • 時間日期:精確到毫秒
  • 日志級別:ERROR, WARN, INFO, DEBUG or TRACE
  • 進程ID
  • 分隔符:--- 標識實際日志的開始
  • 線程名:方括號括起來(可能會截斷控制台輸出)
  • Logger名:通常使用源代碼的類名
  • 日志內容

 日志框架的使用

1.默認配置

Spring Boot為我們提供了很多默認的日志配置,所以,只要將spring-boot-starter-logging作為依賴加入到當前應用中即可。

2.控制台輸出順序

日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低於WARN的信息都不會輸出。
Spring Boot中默認配置ERRORWARNINFO級別的日志輸出到控制台。還可以通過啟動您的應用程序–debug標志來啟用。

 1 @Slf4j
 2 @SpringBootApplication
 3 public class Test01Application {
 4 
 5 
 6     public void index(){
 7 
 8         //日志的級別;
 9         //由低到高   trace<debug<info<warn<error
10         //可以調整輸出的日志級別;日志就只會在這個級別以以后的高級別生效
11         //SpringBoot默認給我們使用的是info級別的,沒有指定級別的就用SpringBoot默認規定的級別;root級別
12         log.trace("");
13         log.debug("測試信息");
14         log.info("普通信息");
15         log.warn("警告進行");
16         log.error("錯誤信息");
17 
18     }
19 
20 
21     public static void main(String[] args) {
22         SpringApplication.run(Test01Application.class, args);
23     }
24 }

3.級別控制

所有支持的日志記錄系統都可以在Spring環境中設置記錄級別(在application.properties中)
格式為:’logging.level.* = LEVEL’

  • logging.level:日志級別控制前綴,*為包名或Logger名
  • LEVEL:選項TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

如果想要在修改日志級別,可以直接在配置文件中設置。

logging.level.com.test=trace


#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

 

日志輸出格式:
%d表示日期時間,
%thread表示線程名,
%-5level:級別從左顯示5個字符寬度
%logger{50} 表示logger名字最長50個字符,否則按照句點分割。 
%msg:日志消息,
%n是換行符
-->
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

 4.切換日志框架

slf4j+log4j的方式:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <artifactId>logback-classic</artifactId>
      <groupId>ch.qos.logback</groupId>
    </exclusion>
    <exclusion>
      <artifactId>log4j-over-slf4j</artifactId>
      <groupId>org.slf4j</groupId>
    </exclusion>
  </exclusions>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>

切換為log4j2

   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-logging</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>

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

 


免責聲明!

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



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