我有我在清理方法中编写的代码片段
for (key, target) in self.targets.items():
try:
logger.info('releasing %s: %s', key, target)
target.dispose() # Something bad can occur here
except:
logger.exception('uh oh, something has gone wrong')
我遇到的问题是在
target.dispose()
调用中,可能会发生某些不良情况,并可能导致解释器崩溃。 (目标对象在C和/或C#中调用东西)我想先调用logt_code来刷新日志,但是python loggers没有flush()方法;只有处理程序可以。有没有一种方法可以通知日志记录框架接下来可能发生不良情况,并且应该在继续处理之前立即刷新处理程序?
最佳答案
研究logging/__init__.py
中的实现,这似乎是迭代记录器的所有处理程序的正确方法:
def flush_logger(logger):
c = logger
while c:
for hdlr in c.handlers:
try:
hdlr.flush()
except AttributeError:
pass
if not c.propagate:
c = None #break out
else:
c = c.parent
关于python - 如何通知python日志记录处理程序可能发生崩溃并应刷新日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979335/