我希望通过更改系统属性来实现在多个环境中运行的单个配置。以下是一个例子:
log4j.appender.file.File=/opt/apps/${myEnvironment}/log/MyService.log
但是,如果有人忘记设置系统属性,我想确保它仍能正常运行。有没有办法在属性文件中指定默认值?
答案 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
您必须验证配置文件中设置的变量是否会覆盖系统属性。