您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何使用springboot logback動態獲取application的配置項”,在日常操作中,相信很多人在如何使用springboot logback動態獲取application的配置項問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用springboot logback動態獲取application的配置項”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
springboot logback動態獲取application的配置項
logback自身支持以下方式配置
因此只能使用spring提供的標簽來對此參數進行配置
springboot logback配置及動態配置log目錄
子節點一 appender
控制臺輸出appender
文件輸入appender
root節點-啟用配置
動態配置log目錄
獲取jar目錄路徑
在多環境的情況下,logback的日志路徑需要進行針對性配置,也就是需要通過application.yml文件中進行配置。
<property name="USER_HOME" value="/home/sebastien" />
但是怎樣才能靈活的配置“/home/sebastien”參數呢,如果不同的環境此參數值不同,那么就需要通過application.yml文件的配置項進行指定。
但是logback.xml加載早于application.yml,如果直接通過${參數key}的形式獲取是無法獲取到對應參數值的。
<springProperty scope="context" name="LOG_HOME" source="logback.file"/>
對照上面的配置,其中property替換成了springProperty標簽。兩個配置屬性name效果是一樣的,只不過后者的source指向了application.yml文件中的key。注意此處不需要${}形式獲取。
<?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用來格式化日志輸出節點,有倆個屬性name和class,class用來指定哪種輸出策略,常用就是控制臺輸出策略和文件輸出策略。
<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表示換行
文件輸出主要包括配置:以指定格式將日志輸出到指定文件夾下的文件中,可以配置該文件的名稱、最大大小、保存時間
例如:
<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節點實際上是配置啟用哪種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的配置去輸出。
import ch.qos.logback.core.PropertyDefinerBase class LoggerConfig : PropertyDefinerBase() { override fun getPropertyValue(): String { return "${ServerConfig.applicationPath}/logs" } }
/** * 獲取jar的絕對路徑文件夾 */ fun getApplicationPath(): String { val h = ApplicationHome(FileUtils::class.java) return h.source.parentFile.toString() }
到此,關于“如何使用springboot logback動態獲取application的配置項”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。