如何訪問Docker容器中的Spring Boot日誌

kerongao發表於2020-11-30

如何訪問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日誌中檢視日誌的方法

相關文章