Журналы Docker в Docker Python SDK: различие между stdout и stderr в правильном порядкеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Журналы Docker в Docker Python SDK: различие между stdout и stderr в правильном порядке

Сообщение Anonymous »

Я использую Docker SDK для Python.
Мне нужно передавать журналы из моего Docker-контейнера для ведения журналов.
В настоящее время я это делаю. это:

Код: Выделить всё

stream = container.logs(stdout=True, stderr=True, stream=True)

for line in stream:
logger.info(line.decode("utf-8"))
Теперь мне нужно различать стандартный вывод и стандартный вывод. Предполагается, что стандартный вывод будет записываться в logger.info, а стандартный вывод — в logger.error.
Мой подход заключается в том, чтобы настройте два потока, один для стандартного вывода и один для stderr, и читайте их параллельно в разных потоках.

Код: Выделить всё

def process_stream(stream, callback):
for line in stream:
callback(line.decode("utf-8").strip())

stdout_stream = container.logs(stdout=True, stderr=False, stream=True, timestamps=True)
stderr_stream = container.logs(stdout=False, stderr=True, stream=True, timestamps=True)

stdout_thread = Thread(
target=process_stream,
args=(
stdout_stream,
logger.info,
),
)
stderr_thread = Thread(
target=process_stream,
args=(
stderr_stream,
logger.error,
),
)

stdout_thread.start()
stderr_thread.start()

stdout_thread.join()
stderr_thread.join()
Однако сообщения из stdout и stderr не всегда регистрируются в правильном порядке.
Я также рассмотрел способы для доступа к файлам журналов из драйвера регистрации файлов Docker JSON, который я использую напрямую, но не нашел способа.
Есть ли способ передавать сообщения в правильном порядке, а также информацию, если сообщение пришло из стандартного вывода или stderr?

Подробнее здесь: https://stackoverflow.com/questions/783 ... tderr-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»