python - 如何通知python日志记录处理程序可能发生崩溃并应刷新日志?

标签 python logging error-handling

我有我在清理方法中编写的代码片段

    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/

相关文章:

python - 使用正则表达式从 Python 数据框中提取和排序日期

python - PyOpenGL glutInit NullFunctionError

docker - docker 日志记录到系统日志的严重性级别

java - 滚动文件实现

error-handling - Xtext : Customizing Error msg by unordered groups

c++ - 在C++中,如何获取当前线程的调用堆栈?

python - 如何测试一个对象是否是锁?

python - 如何在 Pandas 中高效处理时间序列数据

json - 如何在 serilog SQL 接收器中将属性数据记录为 JSON 而不是 XML

python - 如何克服python中的缩进错误?