Я використовую Jupyter ноутбук для розробки деяких Python. Це мій перший удар на реєстрацію помилок, і я маю питання, де немає помилок входять до мого файлу помилки.
Я використовую:
import logging
logger = logging.getLogger("error")
logger.propagate = False
hdlr = logging.FileHandler("error.log")
formatter = logging.Formatter("%(asctime)s %(message)s")
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.DEBUG)
для створення реєстратора.
Потім я використовую блок try / except, який викликається з метою (для тестування), використовуючи стовпець, який не існує в базі даних
try:
some_bad_call_to_the_database("start",group_id)
except Exception as e:
logger.exception("an error I would like to log")
print traceback.format_exc(limit=1)
і виняток називається, як видно з мого виводу в моєму блокноті:
Traceback (most recent call last):
File "<ipython-input-10-ef8532b8e6e0>", line 19, in <module>
some_bad_call_to_the_database("start",group_id)
InternalError: (1054, u"Unknown column "start_times" in "field list"")
Тим не менш, error.log не записується. Будь-які думки будуть оцінені.
Відповіді:
1 для відповіді № 1спробуйте:
except Exception as e:
excep = logger.info("an error I would like to log")
для отримання додаткової інформації зверніться до документів https://docs.python.org/2/library/logging.html
гарного дня!
1 для відповіді № 2
Ви використовуєте logging.exception
, який делегує кореневому реєстратору замість використання logger.exception
, які б використовували ваші (і писали на error.log
)