我刚刚开始使用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
”去哪里了?
感谢您提供的任何支持。
答案 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"]