Spring Boot第五彈:Spring Boot之日誌

Spring Boot之日誌

    

      小弟剛接觸spring boot不久,僅想通過寫網誌的形式來加深記憶和方便以後查閱。如內容有不正確之處,還望各位大佬海量汪涵,並給小弟指出,共同進步。

1.   概述

    Spring Boot使用Commons Logging進行所有內部日誌記錄,併爲Java Util Logging、Log4J2和Logback提供默認配置。

    一般來說,不需要更改日誌相關性,並且Spring Boot默認值將正常工作。


2.   日誌格式


輸出以下項目
  •   2017-9-20 18:52:44.236:日期和時間 – 精確到毫秒容易排序。
  •   INFO:日誌級別,ERROR、WARN、INFO、DEBUG和TRACE。
  •   10984:進程id。
  •   --- :分離器來區分日誌消息的開始。
  •   [main]:線程名。
  •   日誌名:通常是源class的類名(縮寫)。
  •   日誌信息。


3.顏色編碼輸出

      顏色輸出有助於可讀性。可以通過 spring.output.ansi.enabled來設置。使用%clr轉換字配置色彩編碼。在最簡單的形式下,轉換器將根據日誌級別對輸出進行着色。

  • 日誌級別映射到顏色如下:

日誌級別

顏色

FATAL

紅色

ERROR

紅色

WARN

黃色

INFO

綠色

DEBUG

綠色

TRACE

綠色


4.日誌配置

#log ERRORINFO
debug:false
logging:
  file: ng-api.log
  level:
    root: INFO
    org:
      hibernate: ERROR
      springframework:
        web: INFO
    com:
      eugene:
        base: DEBU


4.1日誌文件輸出

logging:
  file: ng-api.lo

指定日誌文件輸出到指定的文件路徑,這裏的名稱可以是絕對路徑也可以是相對於當前目錄的相對路徑。

logging:
  file: ng-api.log

指定日誌文件輸出到指定的目錄中。


4.2日誌文件切割

      默認情況下,Spring Boot對日誌文件每10M進行一次切割。


4.3日誌級別

logging:
  level:
    root: INFO
    org:
      hibernate: ERROR
      springframework:
        web: INFO

日誌系統可以使用logging.level來指定日誌級別。

logging:
  level:
     com:
       eugene:
             base: DEBUG

指定com.eugene.base包的日誌基本爲DEBUG。


5.自定義日誌配置

由於日誌的配置文件是在Spring Context加載之前進行加載的,所以我們無法使用註解@Configuration@PropertySources來控制日誌的配置。


Spring Boot在啓動時會檢查src/main/resources/目錄或者通過logging.config屬性指定的位置,通過不同的配置文件名來區分使用不同的日誌系統。

 

  • 日誌文件名和日誌系統對應關係如下:

logback

logback-spring.xml

Log4j2

log4j2-spring.xml

JDK(Java Util Logging)

logging.properties


5.1 logback

       以logback爲例,進行多環境配置。因爲多環境使用的是spring提供的profile功能,所以logback配置文件必須以logback-spring.xml命名。

  •   logback-spring.xm

<?xml version="1.0"encoding="UTF-8"?>

<configuration>

  <springProfile name="master">

    <!-- 將日誌記錄到文件中-->

    <appender name="LOG"class="class名">

       <!-- 日誌文件輸出路徑-->

      <file>/var/log/mylog/log.log</file>

      <append>true</append>

      <encoder>

 

             <!-- 日誌格式->

        <pattern>時間: %date{yyyy-MM-dd HH:mm:ss.SSS} 耗時: %-4relative 毫秒 線程名稱: [%thread]%logger{35} -%msg %n

        </pattern>

<!-- 此處設置字符集 -->

 <charset>UTF-8</charset>   

      </encoder>

    </appender>

  </springProfile>

 

  <springProfile name="dev">

    <!-- 將日誌記錄到文件中-->

    <appender name="LOG"  class=" ">

      <file>/var/log/ssab/log.log</file>

      <append>true</append>

      <encoder>

        <pattern>時間: %date{yyyy-MM-dd HH:mm:ss.SSS} 耗時: %-4relative 毫秒 線程名稱: [%thread]%logger{35} -%msg %n

        </pattern>

 <!-- 此處設置字符集 -->

 <charset>UTF-8</charset>

      </encoder>

    </appender>

  </springProfile>


          <springProfilename="master">指定當前配置的日誌格式對應的開發環境,有如dev-開發環境、pro生產環境等。即啓動dev環境的時候,日誌輸出會採用相應的環境配置格式。


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