【问题标题】:How to use docker passed environment variable in log4j2?如何在 log4j2 中使用 docker 传递的环境变量?
【发布时间】:2017-11-14 15:26:08
【问题描述】:

我有一个基于 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 运行它并在我的 .bash_profile 中设置 LOG4J_PATH 环境变量,它工作正常,所以这是 docker 和 log4j 之间的东西。

我做错了什么?

【问题讨论】:

  • 也许该变量被设置在一个不同于在容器中执行您的应用程序的用户中?
  • 请注意,环境变量已被代码正确检索,所以我看不出这可能是用户问题
  • 你能解决这个问题吗?
  • 你能解决这个问题吗?我遇到了同样的问题

标签: java docker spring-boot log4j2


【解决方案1】:

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

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

【讨论】:

  • 很遗憾没有帮助
猜你喜欢
  • 2018-09-18
  • 2019-06-02
  • 2018-12-02
  • 2020-05-01
  • 1970-01-01
  • 2017-01-22
  • 2018-10-15
  • 2017-04-08
  • 2015-08-10
相关资源
最近更新 更多