Python 官方文档:入门教程 => 点击学习
目录logback 实现给变量指定默认值格式是 ${变量名:-默认值}logback变量定义变量在 logback.xml 中定义变量在命令行定义变量引入properties文件变量
**光有冒号还不够,再加条短线后面才是默认值**
<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>
<?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 contextsystem
作用域的范围最广,整个 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>
使用方式:
${变量名}
示例:参见前面示例中用法。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: logback 实现给变量指定默认值
本文链接: https://lsjlt.com/news/133963.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0