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

时间:2019-05-02 13:51:34

标签: python docker docker-compose python-logging

我刚刚开始使用Docker。

我正在研究另一个开发人员编码的项目。在项目Docker容器中,我有三个微服务(聚合器,分类器,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”去哪里了?

感谢您提供的任何支持。

3 个答案:

答案 0 :(得分:3)

docker logs classificatore

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

  

-u:无缓冲的二进制stdout和stderr;也PYTHONUNBUFFERED = x有关与'-u'有关的内部缓冲的详细信息,请参见手册页。

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