将所有Python解释器错误转储到日志中?

时间:2013-07-04 19:24:30

标签: python linux

是否可以将Python解释器报告的所有错误转储到以/var/log/python.log存储的日志中,而不管脚本/命令是什么引起的?如果可能的话,最好的方法是什么?

2 个答案:

答案 0 :(得分: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 *的任何其他内容。

请查看this link了解更多详情。

答案 1 :(得分:1)

只需重定向stderr。

python script.py 2> /var/log/python.log