我正在构建一个小型Java应用程序,它通过java -jar myJar.jar
入口点命令在open-jdk docker上运行。我想使用Log4j添加日志记录配置。
这是我所知道的(?)我应该做的:
1.将log4j.xml保存在一个单独的源文件夹中,如src / resource。 2.在docker中的JAR文件外部保留log4j.xml,以允许在运行时进行配置。 3.让JVM知道log4j.xml文件的位置(可能使用类路径)。
有多种方法可以实现这一点 - 可以通过jar -jar
命令的参数配置log4j.xml位置,它可以添加到mvn插件中,可以作为命令添加到Dockerfile中(可能是?)。
是否有最佳实践,所有这些配置都应包含在pom.xml / Dockerfile / Docker entrypoint命令中?
根据我的理解,遵循Mihai评论和其他资源,应该构建docker镜像以支持在容器被打包时将包含的日志配置(例如,使用docker run参数)。这样,图像足够灵活,可支持不同的调试级别。
与非dockerised log4j通常的工作方式(或我对它的理解)相反 - 现在更改调试级别包括停止旧的运行容器并使用具有不同运行时配置的相同映像进行新的运行。
例如,如果图像名称是dockerTestImage。我们首先要做的事情如下:
docker run -DebugLevel=INFO dockerTestImage
。
然后,如果我们因任何原因需要更多的verbouse日志记录,我们将停止旧容器并使用docker run -DebugLevel=DEBUG dockerTestImage
运行一个新容器。