中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用springboot logback動態獲取application的配置項

發布時間:2021-08-30 16:54:48 來源:億速云 閱讀:564 作者:chen 欄目:開發技術

這篇文章主要介紹“如何使用springboot logback動態獲取application的配置項”,在日常操作中,相信很多人在如何使用springboot logback動態獲取application的配置項問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用springboot logback動態獲取application的配置項”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • springboot logback動態獲取application的配置項

    • logback自身支持以下方式配置

    • 因此只能使用spring提供的標簽來對此參數進行配置

  • springboot logback配置及動態配置log目錄

    • 子節點一 appender

      • 控制臺輸出appender

      • 文件輸入appender

    • root節點-啟用配置

      • 動態配置log目錄

        • 獲取jar目錄路徑

        springboot logback動態獲取application的配置項

        在多環境的情況下,logback的日志路徑需要進行針對性配置,也就是需要通過application.yml文件中進行配置。

        logback自身支持以下方式配置

        <property name="USER_HOME" value="/home/sebastien" />

        但是怎樣才能靈活的配置“/home/sebastien”參數呢,如果不同的環境此參數值不同,那么就需要通過application.yml文件的配置項進行指定。

        但是logback.xml加載早于application.yml,如果直接通過${參數key}的形式獲取是無法獲取到對應參數值的。

        因此只能使用spring提供的標簽來對此參數進行配置

        <springProperty scope="context" name="LOG_HOME" source="logback.file"/>

        對照上面的配置,其中property替換成了springProperty標簽。兩個配置屬性name效果是一樣的,只不過后者的source指向了application.yml文件中的key。注意此處不需要${}形式獲取。

        springboot logback配置及動態配置log目錄

        <?xml version="1.0" encoding="utf-8"?>
        <configuration>
            <contextName>xxx-server</contextName>
            <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/>
            <property name="pattern-color" value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %green(%logger{50}) - %highlight(%msg) %n"/>
            <define name="LOG_HOME" class="com.youzu.dc.dcopsserver.config.LoggerConfig" />
            <!-- 控制臺輸出 -->
            <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>${pattern}</pattern>
                </encoder>
            </appender>
            <!-- 控制臺輸出-帶顏色 -->
            <appender name="CONSOLE-WITH-COLOR" class="ch.qos.logback.core.ConsoleAppender">
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>${pattern-color}</pattern>
                </encoder>
            </appender>
            <!-- 文件輸出 -->
            <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>${LOG_HOME}/xxxx.%d.%i.log</fileNamePattern>
                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                        <maxFileSize>100MB</maxFileSize>
                    </timeBasedFileNamingAndTriggeringPolicy>
                    <maxHistory>30</maxHistory>
                    <totalSizeCap>3GB</totalSizeCap>
                </rollingPolicy>
                <encoder>
                    <pattern>${pattern}</pattern>
                </encoder>
            </appender>
            <root level="INFO">
                <appender-ref ref="CONSOLE-WITH-COLOR"/>
                <appender-ref ref="FILE"/>
            </root>
        </configuration>

        子節點一 appender

        appender用來格式化日志輸出節點,有倆個屬性name和class,class用來指定哪種輸出策略,常用就是控制臺輸出策略和文件輸出策略。

        控制臺輸出appender
        <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/>
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
           <pattern>${pattern}</pattern>
          </encoder>
        </appender>

        encoder表示輸出格式,具體說明如下:

        • %d表示時間

        • %thread表示線程名

        • %-5level 表示日志級別,允許以五個字符長度輸出

        • %logger{50}表示具體的日志輸出者,比如類名,括號內表示長度

        • %msg表示具體的日志消息,就是logger.info(“xxx”)中的xxx

        • %n表示換行

        文件輸入appender

        文件輸出主要包括配置:以指定格式將日志輸出到指定文件夾下的文件中,可以配置該文件的名稱、最大大小、保存時間

        例如:

        <property name="LOG_HOME" value="logs"/>
        <property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/>
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/all.%d.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            	<maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
          </rollingPolicy>
          <encoder>
            <pattern>${pattern}</pattern>
            </encoder>
        </appender>

        上述配置的主要內容是:以指定的格式向logs文件下的文件輸出日志,文件名稱格式被指定為logs/all.日期.索引號.log,日志文件最大大小為10MB,超出則創建新文件,日志文件保留三十天

        索引從0開始遞增

        rollingPolicy指滾動粗略,具體配置如上。

        關于日志文件大小限制也可以使用1GB配置。

        root節點-啟用配置

        root節點實際上是配置啟用哪種appender,可以添加多個appender。

        比如:

        <root level="INFO">
         <appender-ref ref="CONSOLE-WITH-COLOR"/>
          <appender-ref ref="FILE"/>
        </root>

        表示level為info級別,啟用渲染器CONSOLE-WITH-COLOR和FILE。

        按照這樣配置,輸出日志時,控制臺會按照CONSOLE定義的格式輸出,而日志文件會按照CONSOLE-WITH-COLOR的配置去輸出。

        動態配置log目錄

        import ch.qos.logback.core.PropertyDefinerBase
        class LoggerConfig : PropertyDefinerBase() {
            override fun getPropertyValue(): String {
                return "${ServerConfig.applicationPath}/logs"
            }
        }

        獲取jar目錄路徑

        /**
         *  獲取jar的絕對路徑文件夾
         */
        fun getApplicationPath(): String {
            val h = ApplicationHome(FileUtils::class.java)
            return h.source.parentFile.toString()
        }

        到此,關于“如何使用springboot logback動態獲取application的配置項”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

        向AI問一下細節

        免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

        AI

        筠连县| 商洛市| 富平县| 青浦区| 阳山县| 长丰县| 柞水县| 彝良县| 襄汾县| 贵港市| 松江区| 甘德县| 思茅市| 阿鲁科尔沁旗| 辉南县| 闽清县| 左云县| 丰城市| 剑河县| 农安县| 监利县| 夏津县| 婺源县| 田东县| 塔城市| 邢台县| 油尖旺区| 个旧市| 昌吉市| 宣恩县| 黎川县| 克拉玛依市| 襄垣县| 青神县| 闽清县| 湘潭县| 安吉县| 连州市| 霍城县| 武陟县| 安溪县|