logback 實(shí)現(xiàn)給變量指定默認(rèn)值
logback 實(shí)現(xiàn)給變量指定默認(rèn)值
格式是 ${變量名:-默認(rèn)值}
**光有冒號(hào)還不夠,再加條短線后面才是默認(rèn)值**
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/logs${log.folder:-/imeth}/info.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>/logs${log.folder:-/imeth}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- keep 30 days worth of history --> <maxHistory>30</maxHistory> <maxFileSize>${log.file.size.max:-50}MB</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> <encoder> <pattern> [%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%-5level] %logger{35} - %msg%n </pattern> </encoder> </appender>
logback變量
定義變量
- 在 logback.xml 中定義
- 在命令行定義
- 引入properties文件
在 logback.xml 中定義變量
<?xml version="1.0" encoding="UTF-8"?> <configuration> <property name="logBase" value="/logs"/> ... </configuration>
在命令行定義變量
在命令行通過大D參數(shù)來定義
java -DHOME="/home/logstore" xxx.jar
引入properties文件
在properties文件定義變量。logback引入properties文件后,獲得變量。
通過文件路徑引入properties文件:
<configuration> <property file="/AppPath/logbackVars.properties" /> ... </configuration>
通過classpath引入properties文件:
<configuration> <property resource="logbackVars.properties" /> ... </configuration>
properties文件的格式是 key-value 型:
HOME=/logs
變量的作用域
變量有三個(gè)作用域:
local
作用域在配置文件內(nèi)有效context
作用域的有效范圍延伸至 logger contextsystem
作用域的范圍最廣,整個(gè) JVM 內(nèi)都有效logback
在替換變量時(shí),首先搜索 local 變量,然后搜索 context,然后搜索 system。
如何為變量指定 scope ?
<configuration> <property scope="context" name="home" value="/logs" /> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>/${home}/myApp.log</file> ... </appender> ... </configuration>
變量的默認(rèn)值
在引用一個(gè)變量時(shí),如果該變量未定義,需要為其指定默認(rèn)值,寫法是:
${變量名:-默認(rèn)值}
示例:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <property name="logBase" value="${HOME:-/logs}"/> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${logBase}/log.%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>60</MaxHistory> </rollingPolicy> <encoder> <pattern>%d{yy/MM/dd HH:mm:ss.SSS} %-5level %line %logger{15} - %msg %n</pattern> <charset>UTF-8</charset> </encoder> </appender> ... </configuration>
變量使用
使用方式:
${變量名}
示例:參見前面示例中用法。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot創(chuàng)建監(jiān)聽和處理事件的操作方法
這篇文章主要介紹了springboot創(chuàng)建監(jiān)聽和處理事件的操作方法,使用Spring Boot的事件機(jī)制來監(jiān)聽和處理事件有多種優(yōu)勢(shì),本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-07-07關(guān)于使用swagger整合springMVC的方法
在平時(shí)開發(fā)寫接口文檔的工作時(shí),一般都是word文檔,帶來書寫麻煩、維護(hù)麻煩的問題,比如改了源代碼忘了更新文檔、解釋不明確帶來歧義、無法在線嘗試等等,swagger可以有效解決這類問題,需要的朋友可以參考下2023-04-04淺談java switch如果case后面沒有break,會(huì)出現(xiàn)什么情況?
這篇文章主要介紹了淺談java switch如果case后面沒有break,會(huì)出現(xiàn)什么情況?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨想小編過來看看吧2020-09-09基于Redis分布式鎖Redisson及SpringBoot集成Redisson
這篇文章主要介紹了基于Redis分布式鎖Redisson及SpringBoot集成Redisson,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小小伙伴可以參考一下2022-09-09Java數(shù)組動(dòng)態(tài)增加容量過程解析
這篇文章主要介紹了Java數(shù)組動(dòng)態(tài)增加容量過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09java如何根據(jù)PostMan發(fā)送請(qǐng)求設(shè)置接口請(qǐng)求工具類
在Java中調(diào)用第三方接口可以通過不同的方式,如使用GET、POST等請(qǐng)求,關(guān)鍵點(diǎn)包括設(shè)置正確的請(qǐng)求方式、URL、參數(shù)(params)、頭信息(headers)和請(qǐng)求體(body),對(duì)于不同的數(shù)據(jù)格式,如XML和JSON,需在header中聲明內(nèi)容類型2024-09-09