首页 > 解决方案 > 从多个 Docker 容器返回到本地主机的 Python 日志记录

问题描述

我有一个场景,我在 Python3 中创建了一个可以在 Docker 容器中启动的测试节点的模拟器。

所以基本上,在一台运行 Ubuntu 18.04 的服务器上,我有 50 ~ 100 个容器,每个容器都模拟一个节点并执行基本的文件传输任务。

每个容器都运行一个模拟节点的 Python3 应用程序。出于记录目的,我有以下内容:

import logging

logging.basicConfig (format='%(asctime)s : %(message)s', filename='test.log', datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG)

所以基本上通过执行:

logging.error ("File transfer failed")

我得到一个带有正确格式的时间戳和错误消息的日志文件 test.log。

问题是这发生在容器内,就此而言,发生在 50 ~ 100 个容器内。

有没有办法让所有容器记录到容器所在的本地主机上的单个日志文件?我已经查看了 Python 中的日志处理程序,但似乎无法摆脱容器并写入本地主机上的文件。

标签: pythonpython-3.xdockerlogging

解决方案


如何使用 docker 卷。docker 卷可用于将数据持久化到外部文件系统。通过这样做,您的容器将有权读取和写入本地硬盘驱动器,而不是在容器本身内部创建日志文件。

但是您可能必须找到一种方法来避免竞争条件,以写入共享位置。

在他们的官方文档中阅读 docker 卷。这很容易。


推荐阅读