如何在 Docker 容器微服务中检查 python-logging 日志

How to check python-logging logs in a Docker container micro-service

我刚开始使用 Docker。

我正在处理由另一位开发人员编码的项目。在项目 Docker 容器中,我有三个微服务(aggregatore、classificatore、testmicro),每个都使用 python 模块 logging 进行调试。

我的问题是我不知道在哪里可以查看 logging 输出。

docker-compose.yml

version: '2.1'
services:
  files:
    image: busybox
    volumes:
     [..]

  grafana:
     [..]

  prometheus:
     [..]

  aggregatore:
   [..] 

  classificatore:
    build: classificatore/.
    volumes:    
      - [..]
    volumes_from: 
      - files
    ports: 
      - [..]
    command: ["python", "/src/main.py"]
    depends_on: 
      rabbit:
        condition: service_healthy

  testmicro:
    [..]    
  rabbit:
    [..]

我是终端,我是运行

$docker-compose up -d

这将启动所有微服务。

让我们专注于分类器服务。

classificatore/Dockerfile

FROM python:3
RUN mkdir /src
ADD requirements.txt /src/.
WORKDIR /src
RUN pip install -r requirements.txt
ADD . /src/.
RUN mkdir -p /tmp/reqdoc
CMD ["python", "main.py"]

classificatore/main.py

import logging

logging.basicConfig(format='%(asctime)s %(message)s', level=logging.DEBUG)
logging.getLogger('pika').setLevel(logging.WARNING)
log = logging.getLogger()
[..]
app = Flask( __name__ , template_folder='./web')

@app.route("/")
def index(message=None):
    log.info("classificatore index!! ")
    [..]
    return render_template('index.html', files1=files1, files2=files2, message=message)

在上面的代码中,输出文本“classificatore index”去哪里了?

感谢您提供的任何支持。

docker logs classificatore

另一种方法是 docker exec -it classificatore bash 然后在你的容器里闲逛

如其他答案中所述,您可以使用 docker logs command. Or if you want to attach your current terminal’s standard input, output, and error (or any combination of the three) to a running container, look at docker attach 命令。这将让您检查您的日志 "live".

您应该将 Dockerfile 修改为 运行 python 带有无缓冲选项的脚本。

-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x see man page for details on internal buffering relating to '-u'

CMD ["python", "-u", "main.py"]