如何在log4j2中使用docker传递的环境variables?

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

当我启动泊坞窗时,我传递了-e "LOG4J_PATH=/tmp/app.log"来指定日志应该到达的位置。

接下来,在log4j2.xml我使用fileName="${env:LOG4J_PATH}"但这不起作用。 我search了几个小时的networking,因此尝试了双$并尝试sys而不是env …什么都没有。

这个System.getenv("LOG4J_PATH")(new EnvironmentLookup()).lookup("LOG4J_PATH")工作正常,所以我知道该variables正在传递给正在运行的图像确定,但由于某种原因,log4j不似乎捡起来了。

如果我不通过docker运行这个,并在我的.bash_profile设置LOG4J_PATH环境variables,它工作正常,所以这是LOG4J_PATH和log4j之间的东西。

我究竟做错了什么?

我相信你需要为你传递的环境variables稍微改变一下键值结构。 你能试一下吗

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