1. 程式人生 > >springboot日誌配置Logback

springboot日誌配置Logback

mat classpath path 節點 %d .text fixed ger tps

springboot可以通過application.yml或者application.properties中配置如下屬性指定日誌配置

#logback日誌配置xml存放路徑配置
logging.config=classpath:logback.xml
#日誌文件存儲位置
logging.path=/workspace/rock/jpa-test/log

logback.xml日誌結構

<configuration>
  <!-- 日誌輸出根配置 -->
  <root level="INFO">
    <!-- 生效的appender -->
    <appender-ref ref="INFO_FILE" />
  </root>

  <!-- 日誌輸出過濾配置 -->
  <logger name="com.inspur" level="error"></logger>
  <logger name="com.ibatis" level="info"></logger>

  <!-- 日誌輸出方式配置 -->
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
    </rollingPolicy>

    <encoder>
      <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern>
    </encoder>
  </appender>

</configuration>

root和logger的屬性就沒什麽可以說的了,appender的屬性說一下:

FileAppender:把日誌添加到文件,有以下子節點:
  <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
  <append>:如果是 true,日誌被追加到文件結尾,如果是 false,清空現存文件,默認是true。
  <encoder>:對記錄事件進行格式化。(具體參數稍後講解 )
  <prudent>:如果是 true,日誌會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認是 false。

RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件。有以下子節點:
  <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
  <append>:如果是 true,日誌被追加到文件結尾,如果是 false,清空現存文件,默認是true。  
  <rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。屬性class定義具體的滾動策略類
  class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。有以下子節點:
  <fileNamePattern>:必要節點,包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。
如果直接使用 %d,默認格式是 yyyy-MM-dd。RollingFileAppender的file字節點可有可無,通過設置file,可以為活動文件和歸檔文件指定不同位置,當前日誌總是記錄到file指定的文件(活動文件),活動文件的名字不會改變;
如果沒設置file,活動文件的名字會根據fileNamePattern 的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。  
  <maxHistory>:可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件。假設設置每個月滾動,且<maxHistory>是6,則只保存最近6個月的文件,刪除之前的舊文件。註意,刪除舊文件是,那些為了歸檔而創建的目錄也會被刪除。


例如:  
<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>
上述配置表示每天生成一個日誌文件,保存30天的日誌文件。

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>test.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>tests.%i.log.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>3</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>
上述配置表示按照固定窗口模式生成日誌文件,當文件大於20MB時,生成新的日誌文件。窗口大小是1到3,當保存了3個歸檔文件後,將覆蓋最早的日誌。

更多詳細內容參照

(1)logback標簽屬性詳解

  http://blog.csdn.net/yingxiake/article/details/51274426

(2)springboot如何使用logback

  https://www.cnblogs.com/zb38/p/5411701.html

springboot日誌配置Logback