Docker 中的 Python 日志记录

Cod*_*ead 6 python docker

我正在测试在 Ubuntu Web 服务器上的 Docker 容器中运行 python 脚本。我正在尝试查找 Python Logger 模块生成的日志文件。下面是我的 Python 脚本

import time
import logging



def main():

    logging.basicConfig(filename="error.log", level=logging.DEBUG)

    start_time = time.time()
    logging.debug("Program starts running at %d", start_time)


    i = 0
    while i < 1000:
        print(i)
        i += 1

    while_time = time.time() - start_time

    logging.debug("Program ends running at %d", while_time)

    start_time = time.time()

    logging.debug("Program starts running at %d", start_time)

    for x in range(0, 100):
        print(x)

    if_time = time.time() - start_time

    print('While took - %s Seconds' % while_time )
    print('If took - %s Seconds' % if_time )

    logging.debug("Program ends running at %d", start_time)


main()
Run Code Online (Sandbox Code Playgroud)

我搜索发现Docker文件在/var/lib/docker/container/{con_id}/{con_id}.log 这个日志文件中生成json格式的日志文件只包含stdout,我找不到Python生成的日志文件。有什么办法可以检索文件。

Zei*_*zar 10

您指定的文件'error.log'中的命令logging.basicConfig(filename="error.log", level=logging.DEBUG)用于logger把你登录到。该文件位于您的容器内,由于容器是无状态的,您必须将日志文件挂载到本地计算机的某个位置,以便在关闭容器电源后进行访问。您可以阅读本文以获取更多信息。

顺便说一句,如果你想在日志文件已经启动时访问它,你可以使用execdocker 的选项通过容器创建一个交互式 shell 并找到日志:

docker exec -it ${container_name}
Run Code Online (Sandbox Code Playgroud)

文档将有助于exec命令行选项。