繁体   English   中英

Docker 容器不打印日志不在 log4j2.xml 中指定的位置

[英]Docker container not printing logs not location specified in log4j2.xml

我为我的 Spring 启动应用程序配置了 Docker 映像。 我还使用 log4j.xml 配置了日志。 But, on running the docker image, the logs are getting printed neither in the docker logs nor on the location specified in log4j.xml.

下面是我的 Dockerfile

FROM openjdk:8
ADD <relative path to jar>/jar-name.jar jar-name.jar
ADD <relative path to property file>/application.properties /app/application.properties
ADD <relative path to log4j file>/log4j2-8081.xml /logs/log4j2-8081.xml
ENV JAVA_OPTS="8080"
ENTRYPOINT ["java", "-Dapp.home=classpath:file:/app/", "- 
Dlog4j.configurationFile=classpath:file:/logs/log4j2-8081.xml", "-jar", "jar-name.jar"]

我需要在执行 docker 运行命令期间通过 log4j.xml 文件路径。 提前致谢

Docker 运行命令:-

docker run -p 8081:8081 -e JAVA_OPTS=-Dserver.port=8081 rdsstg

因此,根据您的查询,您是说日志没有按照应用程序代码和 docker 容器中的 log4j 配置打印,请纠正我的推论。 谢谢。

现在根据您的评论,

我想在容器外创建日志。 在系统的位置 /log 中。

答案是使用卷,其中提供了主机和 docker 容器的路径。 最基本的用法是使用-v option ,见下文。 如需深入了解,请参阅使用卷了解更多详细信息。

docker run -p 8081:8081 -e JAVA_OPTS=-Dserver.port=8081 -v /host_machine/log:/container/var/app/log rdsstg

但是,您确实需要了解,为了让您的 docker 容器在主机上引导日志文件(或任何文件),这些文件应该在容器中生成,即应用程序日志记录应该在容器中工作。 这是你的#1

让我知道以上是否有意义。

  • 附带说明

    对于-e用法,我建议使用--env-file选项,以便您可以将多个环境变量保存在一个文件中,而不是传递多个-e

在评论部分很难解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM