python - Python/Docker:如何在 docker 中使用 python 日志记录模块?
问题描述
我有一个简单的设置,在 python 应用程序中设置了 python 的日志记录模块,如下所示:
app_logger = logging.getLogger('main_thread')
file_handler = RotatingFileHandler('/home/pi/FaunderGateway_Log.log', maxBytes=10000000, backupCount=5)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s')
file_handler.setFormatter(formatter)
app_logger.addHandler(file_handler)
我有一个 RotatingFileHandler,它的绝对路径为“/home/pi/FaunderGateway_Log.log”(如果有人想知道,这个应用程序将在树莓派上运行),现在我正在尝试使用 docker 将应用程序容器化。
构建并尝试运行我的容器后,出现错误:
[Errno 2] No such file or directory: '/home/pi/FaunderGateway_Log.log'
现在,我知道 docker 在容器中有自己的文件系统,它与主机的(pi)文件系统是分开的,但我想告诉 docker 让我的python 应用程序在主机的绝对路径 /home/pi 中正常登录/。我怎样才能做到这一点?
我阅读了一些其他提到卷的线程,但我并不太了解它们。
我正在使用这个命令来运行我的容器:
sudo docker run --privileged fg
--privileged 标志是为了让我可以访问 pi 上的 /dev/mem 文件,以进行 GPIO 操作。
更新:请注意,我希望我的 docker 容器在主机路径 "/home/pi"中创建日志文件,我不想在容器本身内创建 "/home/pi" 目录。
解决方案
尝试:
docker run -v [host_path]:[container_path]
在您的情况下host_path
,/home/pi
更改container_path
为容器中的日志文件目录。
推荐阅读
- database-design - 关系数据库的理想数据模型
- vba - VBA 删除重复项
- javascript - 通过书签设置文档标题,如何?
- android - 使用 Android 的资源覆盖机制覆盖布局文件时,findViewById 返回 null
- python - 将 csv 文件读取到字典 - 仅读取第一个键 + 值
- async-await - NextJS API 路由在收到数据之前返回?
- python - Dask-Kmeans 大尺寸数组的错误
- android - 即使我们解决了这个问题,我的应用更新也被多次拒绝
- html - 带有网格布局的边框和中心图标
- flutter - 颤振不被识别为内部和外部命令