設定spring-boot的logging,spring-bootlogging

來源:互聯網
上載者:User

設定spring-boot的logging,spring-bootlogging

 

spring-boot預設使用logback來記錄logger,spring-boot的包裡面org.springframework.boot.logging.logback路徑下面有一些設定檔,預設的情況下會使用base.xml,它把日誌輸出到控制台和檔案之中。它的內容是:

<included>    <include resource="org/springframework/boot/logging/logback/defaults.xml" />    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />    <root level="INFO">        <appender-ref ref="CONSOLE" />        <appender-ref ref="FILE" />    </root></included>

對於輸出到檔案,如果設定了logging.file就使用該值作為檔案名稱,如果設定了logging.path就使用logging.path/spring.log作為檔案名稱,如果都沒有設定就放入臨時檔案中。

那麼問題來了,如果要寫入檔案的話,一個檔案不會被寫得很大嗎?
這個時候就可以看base.xml裡面includeorg/springframework/boot/logging/logback/file-appender.xml

我們來看看org/springframework/boot/logging/logback/file-appender.xml裡面是什麼東西

<included>    <appender name="FILE"        class="ch.qos.logback.core.rolling.RollingFileAppender">        <encoder>            <pattern>${FILE_LOG_PATTERN}</pattern>        </encoder>        <file>${LOG_FILE}</file>        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">            <fileNamePattern>${LOG_FILE}.%i</fileNamePattern>        </rollingPolicy>        <triggeringPolicy            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <MaxFileSize>10MB</MaxFileSize>        </triggeringPolicy>    </appender></included>

是的,預設的配置裡面有個SizeBasedTriggeringPolicy來表示檔案的大小,每個檔案到了10MB的時候就會重新開啟一個檔案,並且把之前的名稱命名成${LOG_FILE}.%i,這樣就解決了記錄檔過大的問題。

有人可能想問,這些都是預設的配置,如果我不想使用預設的配置,我想按照天來切割日誌,應該如何設定呢?

可以在resources目錄下面建立一個logback-spring.xml的檔案,並且給出自己想要的配置,這裡給一個簡單的配置是的記錄檔可以按天為單位來切割記錄檔

<?xml version="1.0" encoding="UTF-8"?> <configuration>    <include resource="org/springframework/boot/logging/logback/defaults.xml" />    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />     <appender name="TIME_FILE"              class="ch.qos.logback.core.rolling.RollingFileAppender">        <encoder>            <pattern>${FILE_LOG_PATTERN}</pattern>        </encoder>        <file>${LOG_FILE}</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>            <maxHistory>365</maxHistory>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>100MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>     </appender>     <root level="INFO">        <appender-ref ref="CONSOLE" />        <appender-ref ref="TIME_FILE" />     </root></configuration>

上面%d{yyyy-MM-dd}表示命名的檔案名稱字以原始的名字後面加上日期作為尾碼,<maxFileSize>100MB</maxFileSize>表示每個檔案大小為100MB。這樣記錄檔就會以日期來進行切割並且進行儲存了。

所以說如果要自訂日誌的格式, 就可以通過自己編寫logback-spring.xml這個檔案來自己定義了。

最後在設定檔appication.yaml設定好檔案名稱和記錄層級就可以了

spring:    application:        name: spring-boot-logginglogging:    file: ./logs/spring-boot-logging.log    level:        com.dragon.study.spring.boot: DEBUG

如果需要在logback-spring.xml自訂一些設定檔,可以使用

    <springProperty scope="context" name="SYSLOG_HOST" source="logging.syslog.host" defaultValue="syslog.hostname" />    <springProperty scope="context" name="SYSLOG_FACILITY" source="logging.syslog.facility" defaultValue="LOCAL7"/>    <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">        <syslogHost>${SYSLOG_HOST}</syslogHost>        <facility>${SYSLOG_FACILITY}</facility>    </appender>

然後在appication.yaml的設定檔中加入

logging.syslog.facility: syslog.change.hostnamelogging.syslog.facility: LOCAL1

配置進行替代預設值

PS: 遇到一個坑, 就是想關掉某個包下面的日誌,不能直接

logging:    level:        com.dragon.study.spring.boot: OFF

因為OFF是yaml的關鍵字,上面那麼寫沒有任何作用
所以如果想關掉某個包下面的日誌的正確方法是 OFF上面加上單引號

logging:    file: ./logs/spring-boot-logging.log    level:        com.dragon.study.spring.boot: 'OFF'

 

最後如果覺得所講的東西能夠協助到你,並且希望進行更詳細的深入的學習,歡迎加群632109190進行討論和學習。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.