Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 如何在log4j2中使用docker传递的环境变量?_Java_Docker_Spring Boot_Log4j2 - Fatal编程技术网

Java 如何在log4j2中使用docker传递的环境变量?

Java 如何在log4j2中使用docker传递的环境变量?,java,docker,spring-boot,log4j2,Java,Docker,Spring Boot,Log4j2,我有一个基于spring boot的应用程序,它在停靠环境中使用log4j2.xml 当我启动docker时,我通过-e“LOG4J_PATH=/tmp/app.log”来指定日志应该去哪里 接下来,在log4j2.xml中,我使用fileName=“${env:LOG4J_PATH}”但这不起作用。我在网上搜索了几个小时,因此尝试了double$,并尝试了sys而不是env。。。没什么 这个System.getenv(“LOG4J_PATH”)和(new EnvironmentLookup()

我有一个基于spring boot的应用程序,它在停靠环境中使用
log4j2.xml

当我启动docker时,我通过
-e“LOG4J_PATH=/tmp/app.log”
来指定日志应该去哪里

接下来,在
log4j2.xml
中,我使用
fileName=“${env:LOG4J_PATH}”
但这不起作用。我在网上搜索了几个小时,因此尝试了double$,并尝试了
sys
而不是
env
。。。没什么

这个
System.getenv(“LOG4J_PATH”)
(new EnvironmentLookup()).lookup(“LOG4J_PATH”)
工作正常,因此我知道变量正在传递到运行的映像,但由于某种原因,LOG4J似乎没有接收到它

如果我不是通过docker运行它,并在我的
.bash\u配置文件中设置
LOG4J\u PATH
环境变量,那么它工作正常,因此这是docker和LOG4J之间的事情


我做错了什么?

我认为您需要为传递的环境变量稍微更改键值结构。你能试试吗

docker run -e LOG4J_PATH='/tmp/app.log'

可能该变量是在/与容器中执行应用程序的用户不同的用户中设置的?请注意,代码正确检索了环境变量,因此我不认为这可能是一个用户问题。您是否能够解决此问题?您是否能够解决此问题?我被同样的问题困住了,这对我没有帮助