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