一、使用場景
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