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

时间:2015-03-17 09:43:23

标签: java variables logging log4j

我需要解决以下任务。

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

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

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

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

我已经读过这可能与log4j版本2.x有关但这需要我们很多时间 (将log4j.propeties文件转换为log4j2。手动xml,更改代码..)。

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

2 个答案:

答案 0 :(得分:0)

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

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

在你的例子中:

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

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

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

希望它有所帮助!

答案 1 :(得分:0)

System.setProperty(" key"," value");