Java 如何在log4j2中使用docker传递的环境变量?
我有一个基于spring boot的应用程序,它在停靠环境中使用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()
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'
可能该变量是在/与容器中执行应用程序的用户不同的用户中设置的?请注意,代码正确检索了环境变量,因此我不认为这可能是一个用户问题。您是否能够解决此问题?您是否能够解决此问题?我被同样的问题困住了,这对我没有帮助