最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用springboot logback動(dòng)態(tài)獲取application的配置項(xiàng)

 更新時(shí)間:2021年08月30日 14:24:37   作者:程序新視界  
這篇文章主要介紹了使用springboot logback動(dòng)態(tài)獲取application的配置項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot logback動(dòng)態(tài)獲取application的配置項(xiàng)

在多環(huán)境的情況下,logback的日志路徑需要進(jìn)行針對(duì)性配置,也就是需要通過(guò)application.yml文件中進(jìn)行配置。

logback自身支持以下方式配置

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

但是怎樣才能靈活的配置“/home/sebastien”參數(shù)呢,如果不同的環(huán)境此參數(shù)值不同,那么就需要通過(guò)application.yml文件的配置項(xiàng)進(jìn)行指定。

但是logback.xml加載早于application.yml,如果直接通過(guò)${參數(shù)key}的形式獲取是無(wú)法獲取到對(duì)應(yīng)參數(shù)值的。

因此只能使用spring提供的標(biāo)簽來(lái)對(duì)此參數(shù)進(jìn)行配置

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

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

springboot logback配置及動(dòng)態(tài)配置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" />
    <!-- 控制臺(tái)輸出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>
    <!-- 控制臺(tái)輸出-帶顏色 -->
    <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>

子節(jié)點(diǎn)一 appender

appender用來(lái)格式化日志輸出節(jié)點(diǎn),有倆個(gè)屬性name和class,class用來(lái)指定哪種輸出策略,常用就是控制臺(tái)輸出策略和文件輸出策略。

控制臺(tái)輸出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表示輸出格式,具體說(shuō)明如下:

  • %d表示時(shí)間
  • %thread表示線程名
  • %-5level 表示日志級(jí)別,允許以五個(gè)字符長(zhǎng)度輸出
  • %logger{50}表示具體的日志輸出者,比如類名,括號(hào)內(nèi)表示長(zhǎng)度
  • %msg表示具體的日志消息,就是logger.info(“xxx”)中的xxx
  • %n表示換行

文件輸入appender

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

例如:

<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>

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

索引從0開(kāi)始遞增

rollingPolicy指滾動(dòng)粗略,具體配置如上。

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

root節(jié)點(diǎn)-啟用配置

root節(jié)點(diǎn)實(shí)際上是配置啟用哪種appender,可以添加多個(gè)appender。

比如:

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

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

按照這樣配置,輸出日志時(shí),控制臺(tái)會(huì)按照CONSOLE定義的格式輸出,而日志文件會(huì)按照CONSOLE-WITH-COLOR的配置去輸出。

動(dòng)態(tài)配置log目錄

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

獲取jar目錄路徑

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家.

相關(guān)文章

  • 遞歸之斐波那契數(shù)列java的3種方法

    遞歸之斐波那契數(shù)列java的3種方法

    這篇文章主要為大家詳細(xì)介紹了遞歸之斐波那契數(shù)列java的3種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java獲取Cookie里的指定值的實(shí)現(xiàn)方法

    Java獲取Cookie里的指定值的實(shí)現(xiàn)方法

    在Java中,我們經(jīng)常需要從HTTP請(qǐng)求中獲取Cookie,并從中提取特定的值,下面我們將介紹如何通過(guò)Java代碼獲取Cookie中的指定值,文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析

    Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析

    這篇文章主要介紹了Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析的相關(guān)資料,這里對(duì)java 的動(dòng)態(tài)綁定和靜態(tài)綁定做了詳細(xì)的介紹,對(duì)其進(jìn)行總結(jié)整理,需要的朋友可以參考下
    2016-11-11
  • Java數(shù)組添加元素的兩種方法

    Java數(shù)組添加元素的兩種方法

    這篇文章主要介紹了Java數(shù)組添加元素的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • java?web項(xiàng)目Session獲取不到問(wèn)題及解決

    java?web項(xiàng)目Session獲取不到問(wèn)題及解決

    這篇文章主要介紹了java?web項(xiàng)目Session獲取不到問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java8新特性Stream流詳解

    Java8新特性Stream流詳解

    Java8 Stream使用的是函數(shù)式編程模式,如同它的名字一樣,它可以被用來(lái)對(duì)集合進(jìn)行鏈狀流式的操作,本文就將帶著你如何使用 Java 8 不同類型的 Stream 操作,同時(shí)還將了解流的處理順序,以及不同順序的流操作是如何影響運(yùn)行時(shí)性能的
    2023-07-07
  • springboot配合Thymeleaf完美實(shí)現(xiàn)遍歷功能

    springboot配合Thymeleaf完美實(shí)現(xiàn)遍歷功能

    Thymeleaf顯然是一個(gè)開(kāi)發(fā)頁(yè)面的技術(shù),現(xiàn)在各種前端技術(shù)層出不窮,比如現(xiàn)在主流的Vue、React、AngularJS等。這篇文章主要介紹了springboot配合Thymeleaf完美實(shí)現(xiàn)遍歷,需要的朋友可以參考下
    2021-09-09
  • Java如何接收并解析HL7協(xié)議數(shù)據(jù)

    Java如何接收并解析HL7協(xié)議數(shù)據(jù)

    文章主要介紹了HL7協(xié)議及其在醫(yī)療行業(yè)中的應(yīng)用,詳細(xì)描述了如何配置環(huán)境、接收和解析數(shù)據(jù),以及與前端進(jìn)行交互的實(shí)現(xiàn)方法,文章還分享了使用7Edit工具進(jìn)行調(diào)試的經(jīng)驗(yàn),并記錄了一個(gè)常見(jiàn)的解析問(wèn)題及其解決方法
    2024-12-12
  • 基于Eclipse中SVN圖標(biāo)不顯示的解決方法

    基于Eclipse中SVN圖標(biāo)不顯示的解決方法

    本篇文章是對(duì)Eclipse中SVN圖標(biāo)不顯示的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 程序猿必須要掌握的多線程安全問(wèn)題之鎖策略詳解

    程序猿必須要掌握的多線程安全問(wèn)題之鎖策略詳解

    在筆者面試過(guò)程時(shí),經(jīng)常會(huì)被問(wèn)到各種各樣的鎖,如樂(lè)觀鎖、讀寫(xiě)鎖等等,非常繁多,在此做一個(gè)總結(jié),介紹的內(nèi)容如下,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

吉木乃县| 恩施市| 柏乡县| 阿克陶县| 东至县| 家居| 望城县| 大宁县| 姜堰市| 三亚市| 天峻县| 垣曲县| 安国市| 兰州市| 富锦市| 兴海县| 平乡县| 城口县| 泸溪县| 年辖:市辖区| 方正县| 额尔古纳市| 宜黄县| 孟州市| 大余县| 金山区| 平安县| 鲁山县| 高碑店市| 县级市| 昌宁县| 台中县| 七台河市| 和静县| 诸暨市| 山丹县| 和政县| 永善县| 杭州市| 安宁市| 宿松县|