这篇文章给大家分享的是有关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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。