Как перенаправить ошибки времени выполнения Python? - PullRequest
3 голосов
/ 14 ноября 2010

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

Можно ли перенаправить такую ​​ошибку времени выполнения в файл журнала?

Ответы [ 2 ]

5 голосов
/ 14 ноября 2010

Похоже, что вы задаете два вопроса.

Чтобы предотвратить выход вашего процесса из-за ошибок, вам нужно перехватить все exception s, которые были вызваны с помощью try...except...finally.

Вы также хотите перенаправить весь вывод в журнал.К счастью, Python предоставляет для вашего удобства комплексный модуль logging.

Например, для вашего восхищения и восхищения:

#!/usr/bin/env python

import logging
logging.basicConfig(filename='warning.log', level=logging.WARNING)

try:
    1/0
except ZeroDivisionError, e:
    logging.warning('The following error occurred, yet I shall carry on regardless: %s', e)

Это любезно испускает:

% cat warning.log
WARNING:root:The following error occurred, yet I shall carry on regardless: integer division or modulo by zero
2 голосов
/ 14 ноября 2010

Посмотрите на модуль traceback. Если вы поймали RuntimeError, вы можете записать его в журнал (посмотрите на модуль logging).

...