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

时间:2017-11-14 15:26:08

标签: java docker spring-boot log4j2

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

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

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

这个System.getenv("LOG4J_PATH")(new EnvironmentLookup()).lookup("LOG4J_PATH")工作正常,所以我知道变量正在传递给正在运行的图像,但是由于某些原因,log4j似乎没有把它拿起来。

如果我不是通过docker运行它并在我的LOG4J_PATH中设置.bash_profile环境变量,它可以正常工作,这就是docker和log4j之间的事情。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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