這篇文章給大家分享的是有關logback如何實現給變量指定默認值的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
**光有冒號還不夠,再加條短線后面才是默認值**
<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.xml 中定義
在命令行定義
引入properties文件
<?xml version="1.0" encoding="UTF-8"?> <configuration> <property name="logBase" value="/logs"/> ... </configuration>
在命令行通過大D參數來定義
java -DHOME="/home/logstore" xxx.jar
在properties文件定義變量。logback引入properties文件后,獲得變量。
通過文件路徑引入properties文件:
<configuration> <property file="/AppPath/logbackVars.properties" /> ... </configuration>
通過classpath引入properties文件:
<configuration> <property resource="logbackVars.properties" /> ... </configuration>
properties文件的格式是 key-value 型:
HOME=/logs
變量有三個作用域:
local 作用域在配置文件內有效
context 作用域的有效范圍延伸至 logger context
system 作用域的范圍最廣,整個 JVM 內都有效
logback 在替換變量時,首先搜索 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>在引用一個變量時,如果該變量未定義,需要為其指定默認值,寫法是:
${變量名:-默認值}
示例:
<?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>使用方式:
${變量名}
感謝各位的閱讀!關于“logback如何實現給變量指定默認值”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。