如何为log4j属性指定默认值

时间:2013-11-14 15:25:57

标签: log4j

我希望通过更改系统属性来实现在多个环​​境中运行的单个配置。以下是一个例子:

log4j.appender.file.File=/opt/apps/${myEnvironment}/log/MyService.log

但是,如果有人忘记设置系统属性,我想确保它仍能正常运行。有没有办法在属性文件中指定默认值?

1 个答案:

答案 0 :(得分:2)

这可能是可能的。根据{{​​1}}的API文档,您的变量应首先在系统属性中查找其值,如果在那里找不到它,则应该搜索配置文件。

  

所有选项值都允许变量替换。变量的语法   替换类似于Unix shell。字符串之间的   打开“$ {”并关闭“}”被解释为键。的价值   替换变量可以定义为系统属性或在   配置文件本身。首先搜索密钥的值   系统属性,如果没有找到,则在其中搜索   正在解析的配置文件。相应的值替换   $ {variableName}序列。例如,如果java.home系统   属性设置为/ home / xyz,然后每次出现序列   $ {java.home}将被解释为/ home / xyz。

https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PropertyConfigurator.html

您必须验证配置文件中设置的变量是否会覆盖系统属性。