Два сообщения журнала, записанные в одну строку - PullRequest
0 голосов
/ 14 сентября 2018

Я перехожу от использования print() операторов во всех моих сценариях к более серьезной системе ведения журналов. Я использую модуль logging для управления задачей. Хотя есть одна вещь, которую я не могу достичь с этим:

В некоторых случаях я хочу создать запись в журнале в два отдельных этапа, но записать их в одной строке. Нечто, что классически будет выглядеть так:

Initiating procedure... OK

В этом случае партия OK будет записана только в случае успешного выполнения задачи.

Я использовал для этого следующие команды печати:

print('Initiating procedure... ', end="", flush=True)
...
print('OK')

Есть ли способ достичь аналогичной цели с помощью модуля logging? Что-то вроде

logging.info("First message", end="", flush=True)
...
logging.info("OK")

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать BufferingHandler, например, MemoryHandler вместе с пользовательским форматером для достижения того, что вы хотите. При таком подходе буферизуются записи в памяти до тех пор, пока они не будут сброшены, а сбрасывающая запись записывается в целевой обработчик и позволяет вам потенциально объединить две записи журнала в одно выходное событие.

0 голосов
/ 14 сентября 2018

Я не уверен, что это хорошая идея.Я не думаю, что журналы предназначены для использования таким образом.Вы часто будете видеть перед вашим сообщением информацию о дате, времени и характере сообщения журнала.

Вы действительно хотите строку, подобную этой:

INFO:ROOT 2018-09-01 22:12:13 Initiating procedure... INFO:ROOT 2018-09-01 22:12:17 OK

в той же строке?

Часто вы анализируете свои журналы, используя другие технологии (я часто анализирую журналы с помощью awk), и я уверен, что я был бы очень обеспокоен такими журналами.

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