Как получить все журналы Python только при ошибке?

1

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

Было бы неплохо, если бы я мог сбросить и это, чтобы длительный процесс не содержал гигабайт логов.

В качестве примера. У меня есть процесс, который обрабатывает один миллион виджетов. Обработка виджета может быть сложной и включать несколько этапов. Если обработка не удалась, было бы полезно знать все журналы этого виджета до этого момента.

from random import randrange

logger = logging.getLogger()
for widget in widgetGenerator():
  logger.reset()
  widget.process(logger)

class Widget():
  def process(self, logger):
    logger.info('doing stuff')
    logger.info('do more stuff')
    if randrange(0, 10) == 5:
       logger.error('something bad happened')

1 из 10 будет напечатано следующее:

делать вещи

делать больше вещей

случилось что-то плохое

Но нормальные журналы не будут напечатаны иначе.

Можно ли это сделать с помощью регистратора, как есть, или мне нужно свернуть мою собственную реализацию?

  • 0
    Для начала у вас должна быть строка вроде logging.basicConfig(level=logging.ERROR) .
  • 0
    Точно. И я могу установить это сейчас. Но если регистрируется ошибка, я ищу решение, которое позволило бы мне также просмотреть все журналы Info / Debug.
Теги:
logging

1 ответ

0

Используйте MemoryHandler для буферизации записей, используя пороговое значение, например, ERROR, и сделайте target атрибут MemoryHandler указателем на обработчик, который записывает, например, консоль или файл. Тогда вывод должен происходить только в том случае, если порог (например, ERROR) достигнут во время выполнения программы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню