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

6ovsh4lw  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(209)

我们在1.2x版本中使用log4j,并希望尽可能保留它。我们在log4j.properties文件中设置了一个graylog appender,用于设置IP地址和端口。如果它们是硬编码的,则记录到gray log中。

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

之后,每个部署环境中的操作团队只需为IP和端口设置一次此配置,并且它将在log4j.properties文件中使用此变量的所有Java项目中工作。
理想的解决方案是使用操作系统的环境变量,但任何其他配置作为属性文件(不是log4j本身的配置,除非使用JVM参数-这不是我们的选项)或其他解决方案

  • 我读到过log4j 2.x版可以做到这一点,但这会花费我们很多时间 *(手动将log4j.propeties文件转换为log4j2.xml,更改代码..)。
hmtdttj4

hmtdttj41#

这可以在log4j.properties文件中完成。注意,你不能使用环境变量(这是一个特定于平台的概念)。
这两个属性(IP和端口)可以在代码中设置,也可以使用“-D”JVM选项设置。
在您的示例中:

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

字符串
这允许您使用${...}表示法引用属性。

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

exdqitrt

exdqitrt2#

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

字符串

相关问题