log4j配置获取系统属性及默认值

转自:https://blog.csdn.net/ancongxie6976/article/details/101326474

 

一、使用场景

  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

 

posted @ 2022-11-16 14:36  Boblim  阅读(446)  评论(0编辑  收藏  举报