Docker中的Python日志记录类:日志消失了

前端之家收集整理的这篇文章主要介绍了Docker中的Python日志记录类:日志消失了 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

几年来,我以相同的方式使用Python的日志记录类:

def get_module_logger(mod_name):
    """
    To use this,do logger = get_module_logger(__name__)
    """
    logger = logging.getLogger(mod_name)
    handler = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s [%(name)-12s] %(levelname)-8s %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)
    return logger

然后在某些模块中

logger = get_module_logger(__name__)

现在,我正在运行一个在Docker容器中使用此功能的Python应用程序.我正在使用-d -i -t运行容器.当我在docker exec -it containername / bin / bash之后进入容器时,如果我在生成日志的python脚本中执行命令,则可以看到日志.但是,从外部来看,泊坞窗日志容器名从不显示任何内容.我已经尝试通过一些Web帖子以PYTHONUNBUFFERED = 0运行我的容器,但这也没有帮助.使用docker logs -f containername尾部也不会显示任何内容.所以我所有的日志,stderr和stdout都是空的.我也尝试过logging.StreamHandler(sys.stdout),但无济于事.

怎么了?我需要更改处理程序中的某些内容吗?

编辑:我的Dockerfile非常简单:

FROM python:3.5.1
MAINTAINER tommy@...
ADD . /tmp

#need pip > 8 to have internal pypi repo in requirements.txt
RUN pip install --upgrade pip 
#do the install
RUN pip install /tmp/py/

CMD myservice 

编辑2:

~ docker --version
Docker version 1.11.0,build 4dc5990
最佳答案
我能够看到日志输出,并且无法重现您的代码问题.

我创建了一个名为tommy.py的文件

import logging

def get_module_logger(mod_name):
    """
    To use this,do logger = get_module_logger(__name__)
    """
    logger = logging.getLogger(mod_name)
    handler = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s [%(name)-12s] %(levelname)-8s %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)
    return logger

if __name__ == "__main__":
    get_module_logger(__name__).info("HELLO WORLD!")

运行以下命令:

docker run -d -v /tmp/tommy.py:/opt/tommy.py python:3.5 python /opt/tommy.py

看到了:

$docker logs -f sleepy_poincare 
2016-08-30 17:01:36,026 [__main__    ] INFO     HELLO WORLD!

编辑:
这是我的Docker版本:

$docker --version
Docker version 1.12.0,build 8eab29e
原文链接:https://www.f2er.com/docker/532668.html

猜你在找的Docker相关文章