如何从 log4j.properties 文件引用变量?

问题描述 投票:0回答:2

我需要解决以下任务。

我们在 1.2x 版本中使用 log4j,并希望尽可能保留它。 log4j.properties 文件中有一个graylog 附加程序,我们在其中设置 IP 地址和端口。如果它们是硬编码的,则可以记录到灰色日志。

任务是在 log4j.properties 文件中以某种方式配置这两个参数(IP 和端口)。

之后每个部署环境的运营团队只需为IP和端口设置一次此配置,它将在log4j.properties文件中使用此变量的所有java项目中工作。

理想的解决方案是使用操作系统的环境变量,但任何其他配置作为属性文件(不是 log4j 本身之一,除了使用 JVM 参数 - 这不是我们的选择)或其他解决方案

我读到,这对于 log4j 2.x 版本是可能的,但这会花费我们相当多的时间(手动将 log4j.propeties 文件转换为 log4j2.xml,更改代码..)。

我会很高兴得到任何合理的答案。

java variables logging log4j
2个回答
1
投票

这可以在 log4j.properties 文件中完成。请注意,您不能使用环境变量(这是特定于平台的概念)。

这 2 个属性(IP 和端口)可以在代码中设置或使用“-D”JVM 选项。

在你的例子中:

java ... -Dip=%YOUR_IP% -Dport=%YOUR_PORT% ... your_app

这允许您使用 ${...} 表示法引用属性 例如:

log4j.graylog_appender.LOGGER.IP=${ip}
log4j.graylog_appender.LOGGER.PORT=${port}

希望有帮助!


0
投票
System.setProperty("key", "value");
© www.soinside.com 2019 - 2024. All rights reserved.