如何访问Docker容器中的Spring Boot日志

如何访问Docker容器中的Spring Boot日志

1. 概述

在本文中,我们将演示如何在Docker容器中访问Spring Boot日志,从本地开发环境到多容器解情况

2. Console 控制台日志输出

首先构造我们的Spring BootDocker image ,使用如下命令:

mvn spring-boot:build-image

然后,当我们运行的容器的时候,我们可以立即看到STDOUT日志在控制台打印出来:

docker run --name=demo-container docker.io/library/spring-boot-docker:0.0.1-SNAPSHOT

Setting Active Processor Count to 1
WARNING: Container memory limit unset. Configuring JVM for 1G container.

下面,让我在Spring Boot配置文件application.properties中配置日志输出文件

logging.file.path=logs

下面我们使用 tail -f 命令来获取日志文件中的日志内容:


docker exec -it demo-container tail -f /workspace/logs/spring.log > $HOME/spring.log

Setting Active Processor Count to 1
WARNING: Container memory limit unset. Configuring JVM for 1G container.

上面是如何获取单个容器日志的方法。在下一章中,我们将学习如何获取多个容器的日志和日志输出

3. 使用Docker Volume保存Log文件

如果我们想从主机文件系统访问日志文件,必须创建一个Docker Volume

我们可以使用命令构建我们的应用程序镜像:

mvn spring-boot:build-image -v /path-to-host:/workspace/logs

然后,我们可以在主机的/path-to-host目录下看到spring.log日志文件

如果我们使用Docker Compose来运行多个容器,那么我们可以在Docker Compose中指定Volume来保存日志

Compose 文件如下:

image: helloworld:latest
container_name: helloworld-logs
volumes:
- /path-to-host:/workspace/logs

运行上面的Compose file

docker-compose up

注意docker-compose.yaml 文件必须在当前目录下,才能执行docker-compose up ,否则会提示找不到docker-compose.yaml文件

这样,多个容器的日志就会写入到主机的/path-to-host 目录下

4. 使用 docker logs 命令

docker logs命令显示运行中的容器所记录的信息;默认情况下,docker logs显示命令的输出,就像在终端中交互式地运行命令时显示的那样。UNIX和Linux命令在运行时通常打开三个I/O流,分别是STDIN、STDOUT和STDERR。STDIN是命令的输入流,它可以包括来自键盘的输入或来自另一个命令的输入。STDOUT通常是命令的正常输出,而STDERR通常用于输出错误消息。默认情况下,docker日志显示命令的STDOUT和STDERR。要了解更多关于I/O和Linux的信息,请参阅Linux文档项目关于I/O重定向的文章。

docker logs -f 

5. 结论

在本文中,我们介绍了几种从Docker日志中查看日志的方法

你可能感兴趣的:(spring,boot,教程,docker,docker,java,linux)