SpringBoot 日誌框架

默認的日誌框架 logback

SpringBoot使用Logback做爲默認的日誌框架。logback 是log4j框架的做者開發的新一代日誌框架,它效率更高、可以適應諸多的運行環境,同時自然支持SLF4J。spring-boot-starter 其中包含了 spring-boot-starter-logging,該依賴內容就是 Spring Boot 默認的日誌框架 logback。web

默認logback日誌打印效果圖spring

從上圖能夠看到,日誌輸出內容元素以下app

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

logback 基本配置

Spting-Boot 默認集成的 logback 雖然打印些日誌信息,可是不夠友好。知足不了咱們平常開發需求。所以,咱們能夠在根目錄下建立 logback.xml 或 logback-spring.xml (建議命名)文件,進行自定義配置(In a Spring Boot application, you can specify a Logback XML configuration file as logback.xml or logback-spring.xml in the project classpath. The Spring Boot team however recommends using the -spring variant for your logging configuration, logback-spring.xml is preferred over logback.xml. If you use the standard logback.xml configuration, Spring Boot may not be able to completely control log initialization.)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 控制檯輸出 start -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 控制檯輸出 end -->

    <!-- 文件日誌輸出 start -->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>D://logs/demo_info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>D://logs/demo_info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>50MB</MaxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 文件日誌輸出 end -->

    <!-- 異常日誌輸出 start -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>D://logs/demo_error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>D://logs/demo_error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>50MB</MaxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} #### %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 異常日誌輸出 end -->

    <!--打印info級別的日誌,注意,additivity必須是false-->
    <logger name="monitorLog" level="info" additivity="false">
        <appender-ref ref="INFO" />
    </logger>

    <!--打印異常錯誤日誌,注意,additivity必須是false-->
    <logger name="errorLog" level="error" additivity="false">
        <appender-ref ref="ERROR" />
    </logger>

    <!--還能夠根據業務須要配置其餘的logger-->
    <!--實際項目中咱們一般將不一樣的日誌打印到不一樣的日誌文件中-->

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

日誌級別

默認狀況下,Spring Boot 配置 ERROR, WARN, INFO 三種日誌級別。若是須要 Debug 級別的日誌。在 src/main/resources/application.properties 中配置數據源信息。框架

debug=true

此外,配置 logging.level.* 來具體輸出哪些包的日誌級別。spring-boot

logging.level.root=INFO logging.level.org.springframework.web=DEBUG

日誌文件

默認狀況下, Spring Boot 日誌只會輸出到控制檯,並不會寫入到日誌文件,所以,對於正式環境的應用,咱們須要經過在 application.properites 文件中配置 logging.file 文件名稱和 logging.path 文件路徑,將日誌輸出到日誌文件中。spa

logging.path = /var/tmp logging.file = xxx.log logging.level.root = info

若是隻配置 logging.path,在 /var/tmp文件夾生成一個日誌文件爲 spring.log。若是隻配置 logging.file,會在項目的當前路徑下生成一個 xxx.log 日誌文件。線程

值得注意的是,日誌文件會在 10MB 大小的時候被截斷,產生新的日誌文件 debug

經常使用的日誌框架 log4j

 若是,咱們但願使用 log4j 或者 log4j2,咱們能夠採用相似的方式將它們對應的依賴模塊加到 Maven 依賴中。日誌

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

或者code

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

log4j 依賴模塊加到 Maven 依賴中後,在 src/main/resources 目錄下加入 log4j-spring.properties 配置文件。Spring Boot 官方推薦優先使用帶有 –spring 的文件名做爲你的日誌配置, 例如 log4j-spring.properties,固然使用 log4j.properties 也是支持的。

相關文章
相關標籤/搜索