Springboot如何使用logback實現多環境配置?
前言
Logback是由log4j創始人設計的又一個開源日記組件,Logback 當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊,logback-classic是log4j的一個改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日記系統如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日記的功能
引入依賴
引入logback所需要的依賴
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.6</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.18</version> </dependency>
如果使用spring-boot,兼容logback,默認已經集成瞭這些文件,所以就不需要自己依賴註入瞭,直接在項目中使用就行瞭。
配置項值方案
利用Spring boot中application.yml的spring.profiles.active
環境配置,dev開發環境和部署環境連接的數據庫地址、debug模式等等都是不同的,為瞭區分dev開發環境配置和生產環境配置,可以創建兩個yml文件,什麼環境使用相應的配置文件:
- application.yml:公共配置文件,裡面可以通過spring.profiles.active=dev來指定使用哪個配置文件
- application-dev.yml:開發環境配置文件
- application-prod.yml:生產環境配置文件
註意:
1、當公共配置文件application.yml和dev.yml(或prod.yml)同時存在同一個配置的時候,以dev.yml(prod.yml)配置文件為主,
2、當配置項隻在公共application.yml文件中有的時候,以公共配置為主
3、可以把公共配置項放到application.yml中
我們在看dev.xml和prod.xml配置文件
dev.xml配置
#dev.xml中的配置,用戶開發環境 log: path: /Users/gujiachun/Downloads level: debug
prod.xml配置
#prod.xml中的配置,用戶生產環境 log: path: /Users/gujiachun/Downloads level: info
此方案的設計原理就是,不同環境不同的配置值;然後在logback-spring.xml中使用此配置值。
上圖就是logback-spring.xml配置,裡面有個重要的就是springProperty標簽,可以利用這個標簽引用到application.yml中的值(包含dev.xml、prod.xml);log.level和log.path的值就可以在logback-spring.xml中使用,使用方式 l o g P a t h 、 {logPath}、 logPath、{logLevel}。
測試代碼
啟動測試,指定spring.profiles.active=dev或prod;我們發現在logPath目錄出現對應的日志文件
因為不同的環境,我們配置成日志級別不一樣,dev對應debug,prod對應info;日志文件內容不同環境對應不同內容
dev環境輸出
2020-01-04 10:01:50,298 — debug…
2020-01-04 10:01:50,298 — info…
2020-01-04 10:01:50,298 — error…
prod環境輸出
2020-01-04 10:03:55,198 — info…
2020-01-04 10:03:55,198 — error…
外部配置文件方案
另一種更簡單的方式,可以利用logging.config指定配置文件,而且有一個好處可以不一定要取名logback-spring.xml;我們來看一下
application-dev.xml環境
#日志相關配置 logging: config: classpath:conf/logback-dev.xml
application-prod環境
#日志相關配置 logging: config: classpath:conf/logback-prd.xml
logback-dev.xml配置
logback-prod.xml配置
啟動指定spring.profiles.active=dev
在控制臺輸出瞭
而在日志文件
日志內容
2020-01-04 11:56:10 [39mDEBUG[0;39m 7454 --- [main] [36mc.r.g.t.LoggerTest[0;39m : debug:....
為什麼隻有debug日志,沒有info、error;這個是因為日志文件中加瞭個過濾器
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>${logLevel}</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter>
此過濾器中的屬性onMatch和onMismatch,匹配日志級別就接受,不匹配就不接受。所以隻接受debug級別。
啟動指定spring.profiles.active=prod
控制臺輸出
日志文件
生成瞭4個文件,也是因為過濾器,生產環境的日志級別為info,所以debug日志文件裡面為空。
springProfile方案
springProfile標簽在logback.xml中可以起到區分不同環境分支;如果我們需要配置不同環境,不同的輸出方式,如:dev環境輸出到控制臺以及文件,prod環境隻要輸出到文件。
logback-spring.xml配置
這樣就可以在同一個配置xml文件中,配置不同的環境值。
總結
上面介紹瞭幾個方案,小夥伴們可以選擇適合自己業務的方案,下一篇老顧介紹日志在集群中的方式。謝謝!!!
到此這篇關於Springboot如何使用logback實現多環境配置?的文章就介紹到這瞭,更多相關logback實現多環境配置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- SpringBoot項目讀取外置logback配置文件的問題及解決
- springboot2.0整合logback日志的詳細代碼
- Springboot內外部logback多環境配置詳解
- SpringBoot配置logback.xml 多環境的操作步驟
- springboot 使用logback啟動報警報錯的解決