如何重定向Python运行时错误?
我正在用Python写一个后台服务,有时候会出现Python运行时错误,比如某个变量的类型不对。这种错误不会导致程序退出。
我能把这种运行时错误记录到一个日志文件里吗?
2 个回答
2
看看 traceback
这个模块。如果你遇到 RuntimeError
这种错误,你可以把它记录到日志里(可以参考一下 logging
这个模块)。
5
看起来你在问两个问题。
为了防止你的程序因为错误而退出,你需要使用 exception
来捕捉所有出现的错误,这可以通过 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