java - 如何在 docker 卷中保存 java.util.logging 输出

标签 java docker dockerfile java.util.logging

我有一个java应用程序。我将项目导出为 .war 文件,构建一个 docker 容器并运行它。

结构如下。对于日志记录,我使用 java 中的库。

import java.util.logging.Logger;

在我的应用程序中,我定义了我的变量:

private static final Logger logger = Logger.getLogger(BusController.class.getName());

对于我使用的输出,例如:

logger.warning("User "+XYZ+" not found!");

当我启动 dockerfile 时,我会为日志安装一个额外的卷。

REGISTRY=xxxxx.net
VERSION=latest
IMAGE=busMicroservice
SERVICE=busmicroservice
LOCAL_DATA_PATH=/opt/docker-busmicroservice/data

docker run -p xxxx:xxxxx -d -v $LOCAL_DATA_PATH:/logs --name $SERVICE --hostname $SERVICE $REGISTRY/$IMAGE:$VERSION

docker 容器成功启动后,我可以使用

检查我的卷
docker inspect busmicroservice

并且可以看到,我的卷已包含在内。 但是我现在必须做什么,日志将保存在我的文件夹“/logs”中?我必须在我的 java 应用程序中实现什么?

提前谢谢您!

---------编辑----------

我现在有第二个线程来回答一个附加问题: How to save logfiles into a docker volume

最佳答案

您需要使用 log4j 文件附加器。 编辑 log4j.properties

log4j.appender.default.file=org.apache.log4j.FileAppender
log4j.appender.default.file.append=true
log4j.appender.default.file.file=/log/logfile.log
log4j.appender.default.file.threshold=INFO
log4j.appender.default.file.layout=org.apache.log4j.PatternLayout
log4j.appender.default.file.layout.ConversionPattern=%-5p %c: %m%n

当应用程序启动时,它将在/log/logfile.log文件中写入日志

有关 Java 应用程序的完整示例,请参阅下面的内容。 https://dzone.com/tutorials/java/log4j/log4j-file-appender-example-1.html

关于java - 如何在 docker 卷中保存 java.util.logging 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47774369/

相关文章:

mysql - Docker:Mysql在启动后几秒钟后崩溃

java - 我正在创建一个刽子手程序,但我在单词更新方法方面遇到了一些问题

java - 无法使用 @PersistenceContext 注入(inject) RESOURCE_LOCAL 容器管理的 EntityManager

linux - centOS 7 上的 Docker-CE 无法运行容器

docker - WordPress docker 的 nginx ssl 反向代理不会加载资源和 css

docker - 有没有办法在Kubernetes部署/ pods 定义中提供类路径?

docker - docker镜像之间的常用命令

java - System.out.println/System.err.println 不工作

java - 解压缩带(嵌入)括号的 RLE 字符串时,递归如何工作?

python - 您的 shell 尚未正确配置为在 dockerfile 上使用 'conda activate'