如何在python 3中记录所有异常

时间:2012-07-04 18:21:53

标签: exception logging exception-handling python-3.x error-logging

我不想捕获很多异常,我希望它们停止处理,但是,我仍然希望日志文件中的堆栈跟踪。有没有办法设置记录器,以便自动记录所有异常?

现在我正在写这样的事情:

try:
  blah
except:
  logging.exception('doing blah')
  raise

占用了大量的时间和空间+它只会记录我有一个try子句的异常,而不是其他的。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用装饰器使用记录任何未捕获异常的代码来包装单个函数和方法。

这意味着应该执行此日志记录的任何函数定义前面还有一行代码。优点是:可以快速添加和删除。

装饰者也可以获得参数。例如,您可以指定要记录的那些例外的基类。

Here's a basic question & concise answer on how to write decorators

答案 1 :(得分:0)

您可以在代码的最顶层放置一个catch all handler:

try:
  everything
except:
  logging.exception('unhandled')
  raise