【发布时间】:2015-04-08 09:22:26
【问题描述】:
我运行一个无头无人值守的服务器,它将所有内容记录到远程服务器。我在那里运行的应用程序也通过SysLogHandler 执行此操作。它工作正常。
我遇到了程序崩溃的情况(在try: except: 未处理的地方),我也想以这种方式记录回溯。这有可能吗?
我特指意外回溯,我知道我可以log exceptions in an except: clause。
【问题讨论】:
我运行一个无头无人值守的服务器,它将所有内容记录到远程服务器。我在那里运行的应用程序也通过SysLogHandler 执行此操作。它工作正常。
我遇到了程序崩溃的情况(在try: except: 未处理的地方),我也想以这种方式记录回溯。这有可能吗?
我特指意外回溯,我知道我可以log exceptions in an except: clause。
【问题讨论】:
您可以自定义excepthook。
当异常被引发但未被捕获时,解释器调用 sys.excepthook 带有三个参数,异常类、异常实例和回溯 对象
import sys
import logging
logger = ...
def excepthook(type_, value, traceback):
logger.exception(value)
# call the default excepthook
sys.__excepthook__(type_, value, traceback)
sys.excepthook = excepthook
【讨论】: