Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从log4j.properties文件中引用变量?_Java_Variables_Logging_Log4j - Fatal编程技术网

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

Java 如何从log4j.properties文件中引用变量?,java,variables,logging,log4j,Java,Variables,Logging,Log4j,我需要解决以下任务 我们正在1.2x版中使用log4j,如果可能的话,我们希望保留它。在log4j.properties文件中有一个graylog appender,用于设置ip地址和端口。如果它们是硬编码的,则记录到灰色日志会起作用 但是,任务是在log4j.properties文件中以某种方式配置这两个参数(IP和端口)。 之后,每个部署环境上的操作团队只需为IP和端口设置一次此配置,它将在所有使用log4j.properties文件中此变量的java项目中工作 理想的解决方案是使用操作系统

我需要解决以下任务

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

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

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

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

我已经了解到log4j版本2.x可以实现这一点,但这将花费我们很多时间(手动将log4j.properties文件转换为log4j2.xml,更改代码..)


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

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

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

在您的示例中:

java ... -Dip=%YOUR_IP% -Dport=%YOUR_PORT% ... your_app
这允许您使用${…}表示法引用属性 例如:


希望有帮助

System.setProperty(“键”、“值”)

这几乎是复制品。这些答案有帮助吗?谢谢你的回答。在问我的问题之前,我已经找到了这个解决方案,它是有效的。但这不是我们的选项,因为协同配置应该在某些属性文件或类似文件中,而不是作为JVM参数。
log4j.graylog_appender.LOGGER.IP=${ip}
log4j.graylog_appender.LOGGER.PORT=${port}