
一、使用场景
1.因某些原因,我们可能将log4j中的配置变量化,进行动态获取
2.动态获取内容不存在时,我们希望能够赋上通用的值
二、语法
- 单变量:
${前缀:变量:-默认值}
如:
${sys:i2cc.base.dir:-/tmp/i2cc}/logs
- 多个候选变量:
${前缀:变量:-${前缀:变量:-默认值}}
如:
${sys:i2cc.base.dir:-${sys:i2cc.base:-/tmp/i2cc}}/logs
三、测试
在idea Run/Debug Configurations中VM options中先后配置-Di2cc.base.dir=/tmp/a/ 和-Di2cc.base=/tmp/b/及不配置
1 public class FunctionTest {
2 private static final Logger logger = LogManager.getLogger(FunctionTest.class);
3 public static void main(String[] args){
4 logger.error("asdfasdf");
5 }
6 }
四、结果
启动程序后,日志将分别写到
# -Di2cc.base.dir=/tmp/a/
/tmp/a/
# -Di2cc.base=/tmp/b/
/tmp/b/
# 不配置
/tmp/i2cc