Как проверить логи python-logging в микросервисе контейнера Docker - PullRequest
0 голосов
/ 02 мая 2019

Я только начал использовать 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"?

Спасибо за любую поддержку, которую вы можете оказать.

Ответы [ 3 ]

3 голосов
/ 02 мая 2019

docker logs classificatore

Другим способом будет docker exec -it classificatore bash, а затем дурачиться в вашем контейнере

1 голос
/ 02 мая 2019

Вы должны изменить свой Dockerfile для запуска сценария python с небуферизованным параметром.

-u: небуферизованный двоичный stdout и stderr;также PYTHONUNBUFFERED = x см. справочную страницу для получения подробной информации о внутренней буферизации, относящейся к '-u'

CMD ["python", "-u", "main.py"]
1 голос
/ 02 мая 2019

Как написано в других ответах, вы можете использовать команду docker logs . Или, если вы хотите подключить стандартный ввод, вывод и ошибку вашего текущего терминала (или любую их комбинацию из трех) к работающему контейнеру, посмотрите команду docker attach . Это позволит вам проверить ваши журналы «вживую».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...