python - 从多个 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 中的日志处理程序,但似乎无法摆脱容器并写入本地主机上的文件。
解决方案
如何使用 docker 卷。docker 卷可用于将数据持久化到外部文件系统。通过这样做,您的容器将有权读取和写入本地硬盘驱动器,而不是在容器本身内部创建日志文件。
但是您可能必须找到一种方法来避免竞争条件,以写入共享位置。
在他们的官方文档中阅读 docker 卷。这很容易。
推荐阅读
- ruby-on-rails - Rails 并发问题锁定
- javascript - 加载图像路径以使用图像 ReactJS 创建组件
- node.js - 是否可以编辑 JWT 令牌的过期时间?
- angular - Angular RxJS 过滤器 - 返回一个空的或填充的 Observable 列表
- python - 是否可以将以一种方式堆叠的 Python 数组重塑为另一种堆叠类型?
- ghostscript - 重新调整整个 EPS 文件帧边界
- reactjs - React 元素未呈现/React 设置问题
- javascript - 数据未保存在数据库中
- java - 为什么在扩展自定义 toast 消息时附加到根 ViewGroup?
- python - 如何在python中用字符串替换字符串