Ответ 1
Вероятно, плохая идея регистрировать любое исключение, созданное в программе, поскольку Python использует исключения также для нормального потока управления.
Поэтому вы должны регистрировать только исключенные исключения. Вы можете легко сделать это с помощью метода exception()
журнала , если у вас есть объект исключения.
Чтобы обрабатывать все неперехваченные исключения, вы можете либо обернуть точку входа script в блок try...except
, либо путем установки настраиваемого обработчика исключений путем переустановки sys.excepthook()
:
import logging
import sys
logger = logging.getLogger('mylogger')
# Configure logger to write to a file...
def my_handler(type, value, tb):
logger.exception("Uncaught exception: {0}".format(str(value)))
# Install exception handler
sys.excepthook = my_handler
# Run your main script here:
if __name__ == '__main__':
main()