首页 > 解决方案 > 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" 目录。

标签: pythondockerloggingraspberry-pi3

解决方案


尝试:

docker run -v [host_path]:[container_path]

在您的情况下host_path/home/pi更改container_path为容器中的日志文件目录。


推荐阅读