pytest启用Live Logs后部分日志记录器日志缺失原因咨询
pytest实时日志部分缺失的常见原因
记录器自身级别限制:
--log-cli-level=INFO仅控制pytest CLI日志处理器的输出级别,但如果你的自定义日志记录器自身级别设得比INFO高(比如WARNING及以上),那低于该级别的日志会被记录器直接过滤,不会传递给pytest的CLI处理器。而文件处理器能收到,是因为它的级别配置或绑定的记录器规则不同。记录器传播属性被关闭:默认子记录器的日志会向上传播到root记录器,而pytest的CLI日志处理器一般挂载在root上。如果某些记录器设置了
propagate=False,日志就不会传到root,自然不会在CLI输出中显示——但如果文件处理器是直接绑定在这些子记录器上的,就会正常写入文件。pytest日志过滤规则限制:如果在
pytest.ini、conftest.py里配置了log_cli_filter,指定了仅允许特定记录器的日志输出,那不在列表中的记录器日志会被过滤。另外pytest对部分第三方库记录器可能有默认过滤行为。自定义日志配置覆盖pytest设置:如果你的代码里手动调用了
logging.basicConfig或直接修改root记录器的处理器,可能会覆盖pytest默认的CLI日志处理器配置,导致部分记录器的日志无法被pytest捕获。比如你给某些记录器单独绑定了文件处理器,但未开启日志传播,pytest就收不到这些日志。
内容的提问来源于stack exchange,提问作者sparrowt
相关产品推荐
相关产品推荐

