加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:24:43 所属栏目:安全 来源:网络整理
导读:几年来,我以相同的方式使用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

几年来,我以相同的方式使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读