我使用的库通过 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,因此实际上不属于处理程序。
