0

我刚刚开始使用 Docker。

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

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

码头工人-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

这将启动所有微服务。

让我们专注于分类服务。

分类器/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"]

分类器/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”到哪里去了?

感谢您提供的任何支持。

4

3 回答 3

4

docker logs classificatore

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

于 2019-05-02T13:54:04.680 回答
3

您应该修改 Dockerfile 以使用无缓冲选项运行 python 脚本。

-u :无缓冲的二进制标准输出和标准错误;也 PYTHONUNBUFFERED=x 有关与“-u”相关的内部缓冲的详细信息,请参见手册页

CMD ["python", "-u", "main.py"]
于 2019-05-02T13:59:54.507 回答
2

正如在其他答案中发布的那样,您可以使用docker logs命令。或者,如果您想将当前终端的标准输入、输出和错误(或三者的任意组合)附加到正在运行的容器,请查看docker attach命令。这将让您“实时”检查您的日志。

于 2019-05-02T13:59:39.833 回答