是否可以将 Python 解释器报告的所有错误转储到存储为 say 的日志中,/var/log/python.log
而不管是什么脚本/命令导致它们?如果可能的话,最好的方法是什么?
问问题
651 次
2 回答
2
好的,诚然重定向 stderr 可能不是最好的答案。所以另一种解决方案是使用sys.excepthook
.
下面是一个使用它的例子。
import sys
import logging
import traceback
LOGFILE = '/var/log/python.log'
def log_uncaught_exceptions(ex_cls, ex, tb):
logging.critical(''.join(traceback.format_tb(tb)))
logging.critical('{0}: {1}'.format(ex_cls, ex))
def main():
raise Exception
if __name__ == '__main__':
logging.basicConfig(
level=logging.DEBUG,
filename=LOGFILE,
filemode='w')
sys.excepthook = log_uncaught_exceptions
main()
与重定向 stderr 不同,它只会记录来自解释器的错误,而不是脚本输出到 std* 的任何其他内容。
查看此链接以获取更多详细信息。
于 2013-07-04T20:22:28.783 回答
1
只需重定向标准错误。
python script.py 2> /var/log/python.log
于 2013-07-04T19:52:24.300 回答