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

springboot+logback的多環(huán)境配置全過程

 更新時間:2025年09月26日 08:39:44   作者:左邊的天堂  
文章介紹了Spring Boot多環(huán)境配置的兩種方式:推薦使用bootstrap.yml+環(huán)境專用文件(如bootstrap-dev.yml)區(qū)分配置,而舊版(2.6.x以下)可采用bootstrap.yml+application-xxx.yml,同時說明Logback需將配置文件改為logback-spring.xml以支持springProperty多環(huán)境日志設(shè)置

一、springboot多環(huán)境配置

使用springboot的時候,一般會區(qū)分開發(fā)、測試、生產(chǎn)環(huán)境。而在不同環(huán)境部署的時候需要修改對應(yīng)的配置,如果每次切換都需要手動修改一大堆配置其實(shí)很麻煩。

為了方便可以配置多個文件,比如部署測試環(huán)境時,只需修改spring.profiles.active為test即可,再如生產(chǎn)環(huán)境只需修改spring.profiles.active為prod。其他都不需要改動,這樣是不是很方便。

springboot從優(yōu)先級來講有兩種配置bootstrap.ymlapplication.ymlbootstrap.yml的優(yōu)先級要高于application.yml。

利用這個特點(diǎn)我們可以做很多事,比如利用nacos做為配置中心時,bootstrap.yml可以指定nacosserver-addr。

但是區(qū)分不同的環(huán)境對應(yīng)nacosserver-addr是不一樣的,需要分開不同的文件來配置。我們有兩種方式:

  • 第一種(推薦):bootstrap.yml + bootstrap-dev.yml + …
  • 第二種: bootstrap.yml + application-dev.yml + …

第一種方案示例

  • bootstrap.yml配置示例
# Tomcat
server:
  port: 8080

# Spring
spring:
  main:
    # Spring Boot 2.6.3 需要設(shè)定,解決循環(huán)依賴的問題
    allow-circular-references: true
  application:
    # 應(yīng)用名稱
    name: system
  profiles:
    # 環(huán)境配置,可選值:dev、test、prod
    active: dev
  • bootstrap-dev.yml配置示例
# Spring
spring:
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊地址
        server-addr: 192.168.1.31:8848
        # 命名空間,非必須,默認(rèn)是public
        namespace: dev
      config:
        # 配置中心地址
        server-addr: 192.168.1.31:8848
        # 命名空間,非必須,默認(rèn)是public
        namespace: dev
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
  • bootstrap-test.yml配置示例
# Spring
spring:
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊地址
        server-addr: 192.168.100.8:8848
        # 命名空間,非必須,默認(rèn)是public
        namespace: test
      config:
        # 配置中心地址
        server-addr: 192.168.100.8:8848
        # 命名空間,非必須,默認(rèn)是public
        namespace: test
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

以此類推,bootstrap-prod.yml只需修改server-addrnamespace配置即可。

第二種示例

使用第二種方式只能在Spring Boot 2.6.x以下的版本使用,否則會有循環(huán)依賴問題。

還需要在pom.xml文件中添加以下配置:

<packaging>pom</packaging>

如果沒有這個,springboot是無法識別application.yml的。配置和第一種一樣,此處省略。

二、logback多環(huán)境配置

為了能讓springProperty的配置生效,需要把logback.xml 修改成 logback-spring.xml,內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <springProperty scope="context" name="applicationName" source="spring.application.name"/>
    <!-- 單個日志文件的大小 -->
    <springProperty scope="context" name="maxFileSize" source="logging.file.max-size" defaultValue="20MB"/>
    <!-- 日志保留時長 (天) -->
    <springProperty scope="context" name="maxHistory" source="logging.file.max-history" defaultValue="30"/>
    <!-- 日志文件路徑 -->
    <springProperty scope="context" name="log.path" source="logging.path" defaultValue="/logs/${applicationName}"/>

    <contextName>${applicationName}</contextName>

    <!-- 彩色日志依賴的渲染類 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }) %clr(---){faint} %clr([%10t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
    <!-- 默認(rèn)日志輸出格式 -->
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/>

    <!-- 控制臺輸出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 系統(tǒng)日志輸出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${maxFileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>INFO</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- maxFileSize:這是活動文件的大小,默認(rèn)值是10MB,這里設(shè)置為20MB -->
                <maxFileSize>${maxFileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>ERROR</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--  開發(fā)環(huán)境和測試環(huán)境,日志輸出到控制臺  -->
    <springProfile name="dev|test">
        <!--控制臺和日志文件輸出級別-->
        <root level="INFO">
            <appender-ref ref="console"/>
        </root>
    </springProfile>

    <!--  生產(chǎn)環(huán)境,日志輸出到文件  -->
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="file_info"/>
            <appender-ref ref="file_error"/>
        </root>
    </springProfile>
</configuration>

總結(jié)

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

相關(guān)文章

  • 2020Mac M1安裝jdk和IDEA的詳細(xì)方法

    2020Mac M1安裝jdk和IDEA的詳細(xì)方法

    這篇文章主要介紹了2020Mac M1安裝jdk和IDEA的詳細(xì)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式實(shí)現(xiàn)步驟

    SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式實(shí)現(xiàn)步驟

    這篇文章主要介紹了SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • SpringLDAP目錄服務(wù)之LdapTemplate與LDAP操作方式

    SpringLDAP目錄服務(wù)之LdapTemplate與LDAP操作方式

    本文將深入探討Spring LDAP的核心概念、LdapTemplate的使用方法以及如何執(zhí)行常見的LDAP操作,幫助開發(fā)者有效地將LDAP集成到Spring應(yīng)用中,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringBoot的DeferredResult案例:DeferredResult的超時處理方式

    SpringBoot的DeferredResult案例:DeferredResult的超時處理方式

    這篇文章主要介紹了SpringBoot的DeferredResult案例:DeferredResult的超時處理方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java有序的Map LinkedHashMap用法詳解

    Java有序的Map LinkedHashMap用法詳解

    LinkedHashMap是Java提供的一個集合類,它繼承自HashMap,并在HashMap基礎(chǔ)上維護(hù)一條雙向鏈表,本文給大家介紹java 有序的Map LinkedHashMap簡介,感興趣的朋友一起看看吧
    2024-01-01
  • JFinal 調(diào)用存儲過程的步驟

    JFinal 調(diào)用存儲過程的步驟

    這篇文章主要介紹了JFinal 調(diào)用存儲過程的步驟,幫助大家更好的理解和學(xué)習(xí)使用JFinal,感興趣的朋友可以了解下
    2021-03-03
  • Springboot使用jsp具體案例解析

    Springboot使用jsp具體案例解析

    這篇文章主要介紹了Springboot使用jsp具體案例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • springBoot整合RocketMQ及坑的示例代碼

    springBoot整合RocketMQ及坑的示例代碼

    這篇文章主要介紹了springBoot整合RocketMQ及坑的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 關(guān)于Java整合RabbitMQ實(shí)現(xiàn)生產(chǎn)消費(fèi)的7種通訊方式

    關(guān)于Java整合RabbitMQ實(shí)現(xiàn)生產(chǎn)消費(fèi)的7種通訊方式

    這篇文章主要介紹了關(guān)于Java整合RabbitMQ實(shí)現(xiàn)生產(chǎn)消費(fèi)的7種通訊方式,消息中間件是基于隊列與消息傳遞技術(shù),在網(wǎng)絡(luò)環(huán)境中為應(yīng)用系統(tǒng)提供同步或異步、可靠的消息傳輸?shù)闹涡攒浖到y(tǒng),需要的朋友可以參考下
    2023-05-05
  • MyBatis-Plus?中?typeHandler?的使用實(shí)例詳解

    MyBatis-Plus?中?typeHandler?的使用實(shí)例詳解

    本文介紹了在MyBatis-Plus中如何使用typeHandler處理json格式字段和自定義typeHandler,通過使用JacksonTypeHandler,可以簡單實(shí)現(xiàn)將實(shí)體類字段轉(zhuǎn)換為json格式存儲,感興趣的朋友跟隨小編一起看看吧
    2024-10-10

最新評論

曲周县| 防城港市| 兴隆县| 石嘴山市| 天全县| 大足县| 华阴市| 自贡市| 上思县| 岑溪市| 安吉县| 高青县| 锡林郭勒盟| 化德县| 康乐县| 南漳县| 郴州市| 屏南县| 阿图什市| 长岭县| 苗栗市| 旬阳县| 聂拉木县| 西畴县| 遵化市| 楚雄市| 滦平县| 彰化县| 繁昌县| 泽普县| 宿松县| 仙桃市| 涟水县| 本溪市| 枣阳市| 文昌市| 紫阳县| 玛曲县| 南京市| 泗洪县| 石城县|