如何记录未捕获的崩溃的回溯?
how to log tracebacks from uncaught crashes?
我 运行 一个无头和无人值守的服务器,它将所有内容记录到远程服务器。我 运行 的应用程序也通过 SysLogHandler
执行此操作。它工作正常。
我遇到过程序崩溃的情况(在 try: except:
未处理的地方),我也想以这种方式记录回溯。这完全可能吗?
我专门说的是意外回溯,我知道我可以log exceptions in an except:
clause。
您可以自定义 excepthook
。
When an exception is raised and uncaught, the interpreter calls sys.excepthook
with three arguments, the exception class, exception instance, and a traceback
object
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
我 运行 一个无头和无人值守的服务器,它将所有内容记录到远程服务器。我 运行 的应用程序也通过 SysLogHandler
执行此操作。它工作正常。
我遇到过程序崩溃的情况(在 try: except:
未处理的地方),我也想以这种方式记录回溯。这完全可能吗?
我专门说的是意外回溯,我知道我可以log exceptions in an except:
clause。
您可以自定义 excepthook
。
When an exception is raised and uncaught, the interpreter calls sys.excepthook with three arguments, the exception class, exception instance, and a traceback object
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