5

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

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

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

4

1 回答 1

3

这也许是可能的。根据 API 文档org.apache.log4j.PropertyConfigurator,您的变量应首先在系统属性中查找其值,如果未在其中找到,则应改为搜索配置文件。

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

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

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

于 2015-04-08T12:16:13.620 回答