Skip to main content
 首页 » 编程设计

python之如何将 `logging` 警告变成错误

2025年05月04日22lovecherry

我使用的库通过 logging 模块(logging.Logger 的 warn() 和 发出警告和错误error() 方法)。我想实现一个将警告转换为错误的选项(即,警告失败)。

有没有简单的方法可以做到这一点?

通过查看文档,我看不到现成的解决方案。我认为可以通过添加自定义 Handler 对象来实现,但我不确定如何“正确”地做到这一点。有什么指点吗?

请您参考如下方法:

@hoefling 的答案很接近,但我会这样更改:

class LevelRaiser(logging.Filter): 
    def filter(self, record): 
        if record.levelno == logging.WARNING: 
            record.levelno = logging.ERROR 
            record.levelname = logging.getLevelName(logging.ERROR) 
        return True 
 
def configure_library_logging(): 
    library_root_logger = logging.getLogger(library.__name__) 
    library_root_logger.addFilter(LevelRaiser()) 

原因是过滤器用于更改 LogRecord 属性并过滤掉内容,而处理程序用于执行 I/O。您在这里尝试做的不是 I/O,因此实际上不属于处理程序。