关于调试:使用python的日志记录模块记录所有异常和错误

Using python's logging module to log all exceptions and errors

我想检查特定后台文件中的错误,但标准错误流由前台程序控制,并且不显示问题中文件中的错误。 不过,我可以使用logging模块并将输出写入文件。 我想知道如何使用它来记录所有异常,错误及其追溯。


记录程序中抛出的任何异常可能是个坏主意,因为Python也会对正常控制流使用异常。

因此,您应该只记录未捕获的异常。 一旦有了异常对象,就可以使用记录器的exception()方法轻松完成此操作。

要处理所有未捕获的异常,您可以将脚本的入口点包装在try...except块中,也可以通过重新分配sys.excepthook()来安装自定义异常处理程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import logging
import sys

logger = logging.getLogger('mylogger')
# Configure logger to write to a file...

def my_handler(type, value, tb):
    logger.exception("Uncaught exception: {0}".format(str(value)))

# Install exception handler
sys.excepthook = my_handler

# Run your main script here:
if __name__ == '__main__':
    main()