Spring Boot項目的Logback配置文件使用yaml格式

1、普通的Spring項目使用logback默認用properties文件做爲配置變量。

2、如果非要用yaml文件,那麼可以轉成Spring Boot項目,天生無縫結合

3、沒辦法,如果項目配置文件用了yaml,那麼你的logback只能自己另開properties文件進行單獨配置

以下是基於Spring Boot的yaml配置文件示例:

application.yml:

# 日誌配置  爲空爲項目跟目錄下的logs  或者指定已經存在的目錄
log:
  path: /data/weblog/business/www.test.com

logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!--
說明:
    1. 文件的命名和加載順序有關
       logback.xml早於application.yml加載,logback-spring.xml晚於application.yml加載
       如果logback配置需要使用application.yml中的屬性,需要命名爲logback-spring.xml
    2. logback使用application.yml中的屬性
       使用springProperty纔可使用application.yml中的值 可以設置默認值

-->
<configuration scan="true" scanPeriod="60 seconds">

    <!-- log base path -->
    <springProperty scope="context" name="logPath" source="log.path" defaultValue="logs"/>
    <!-- log name -->
    <property name="LOG_HOME" value="${logPath}"/>
    <!-- back log base path -->
    <property name="LOG_BACK_HOME" value="${logPath}/backup"/>

    <property name="SRVNAME" value="clsapi-console"/>
    <!-- 文件切割大小 -->
    <property name="maxFileSize" value="100MB" />
    <!-- 文檔保留天數 -->
    <property name="maxHistory" value="60" />
    <!-- 文檔保留總大小 -->
    <property name="totalSizeCap" value="10GB" />


    <!-- 系統服務日誌 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${SRVNAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${LOG_BACK_HOME}/%d{yyyy-MM-dd}/${SRVNAME}.%d{HH}.%i.log.gz</fileNamePattern>
            <!-- 單個日誌文件最多 100MB, 60天的日誌週期,最大不能超過10GB -->
            <maxFileSize>${maxFileSize}</maxFileSize>
            <maxHistory>${maxHistory}</maxHistory>
            <totalSizeCap>${totalSizeCap}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyyMMdd HH:mm:ss.SSS} %X{LOG_ID} [%thread] %-5level %logger{100}.%method\(\):%L - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- On Windows machines setting withJansi to true enables ANSI
         color code interpretation by the Jansi library. This requires
         org.fusesource.jansi:jansi:1.8 on the class path.  Note that
         Unix-based operating systems such as Linux and Mac OS X
         support ANSI color codes by default.
          recognizes "%black", "%red", "%green","%yellow","%blue",
          "%magenta","%cyan", "%white", "%gray", "%boldRed","%boldGreen",
          "%boldYellow", "%boldBlue", "%boldMagenta""%boldCyan",
          "%boldWhite" and "%highlight"
          -->
        <!--withJansi>true</withJansi-->
        <encoder>
            <!--%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n-->
            <pattern>%boldCyan(%d{yyyy-MM-dd HH:mm:ss.SSS}) - %boldRed(%5p) %blue([%10.10t]) %magenta(%-35.35logger{20}) %yellow(%2M) %green(%2L) : %msg%n</pattern>
            <!--<pattern>%d{yyyyMMddHHmmss} [%thread] [%c %2M %2L] %-3p - %m%n</pattern>-->
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>

    <logger name="com.easonjim.clsapi.aspect.LogsAspect" level="debug">
        <appender-ref ref="api_call_file"/>
    </logger>
    <logger name="org.springframework.web.servlet" level="info"/>   

</configuration>

4、如果你非要用yaml文件,那麼只能使用絕對路徑,例如:

logback-spring.xml引入文件:

<property file="${HOME}/configuration/application.yaml"/>

application.yaml:

LOG_FILE : C:/logs

logback-spring.xml使用:

<appender name="MY_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE}</file>

...

</appender>

logback-spring.xml增加掃描時間:

<configuration scan="true" scanPeriod="10 seconds">

 

參考:

https://stackoverflow.com/questions/42648195/how-to-set-logback-xml-properties-in-application-yaml

https://my.oschina.net/skyzwg/blog/915527

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