Создавайте файл журнала Python только при наличии ошибок (используя модуль регистрации) - PullRequest
5 голосов
/ 15 ноября 2010

Я бы хотел использовать модуль «logging» в Python для записи ошибок в файл журнала.Однако я хочу, чтобы файл создавался только при наличии ошибок.Я использую следующий код:

import logging

f = 'test.conf'

logger = logging.getLogger("test_logger")
logger.setLevel(logging.INFO)

ch_file = logging.FileHandler("test_logger.conf")
ch_file.setLevel(logging.ERROR)

logger.addHandler(ch_file)

ch_file.close()

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

ch.setFormatter(formatter)


logger.addHandler(ch)

logger.info("info")
logger.warn("warning")
#logger.error("error")

Когда logger.error ("error") не закомментирован, я ожидаю, что файл "test_logger.conf" будет создан с ошибкой в ​​нем.Однако, когда строка закомментирована, я обнаружил, что файл test_logger.conf все еще создан и пуст.Как сделать так, чтобы этот файл НЕ создавался, если нет сообщений об ошибках?

Спасибо.

1 Ответ

7 голосов
/ 15 ноября 2010

Вам повезло.FileHandler имеет параметр задержка , разработанный для этой цели:

ch_file = logging.FileHandler("test_logger.conf",delay=True)
...