如何仅在出错时获取所有Python日志?

时间:2019-01-09 19:56:35

标签: python logging

我正在使用内置在日志记录类中的python。我只想在发生错误时注销,但是在发生错误时,请注销所有内容,直到调试为止。

如果我也可以重置它,那就太好了,因此长时间运行的过程不会包含千兆字节的日志。

作为一个例子。我有一个处理一百万个小部件的过程。处理窗口小部件可能很复杂,并且涉及多个步骤。如果处理失败,那么了解该小部件的所有日志将是有帮助的。

from random import randrange

logger = logging.getLogger()
for widget in widgetGenerator():
  logger.reset()
  widget.process(logger)

class Widget():
  def process(self, logger):
    logger.info('doing stuff')
    logger.info('do more stuff')
    if randrange(0, 10) == 5:
       logger.error('something bad happened')

将打印10次中的1次:

  

做事

     

做更多的事情

     

坏事发生了

但是不会打印普通日志。

这可以使用记录器按原样完成,还是我需要推出自己的实现?

1 个答案:

答案 0 :(得分:0)

使用MemoryHandler使用阈值(例如, ERROR,并使MemoryHandler的{​​{1}}属性指向写入例如控制台或文件。然后,只有在程序执行期间达到阈值(例如target)时,才应该输出。