You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy Logger配置问题:无法过滤标准Python logging模块日志

问题描述

在配置日志记录器时遇到问题:应用依赖标准Python logging库,但无法通过Kivy的Logger对象过滤不同日志级别或模块的日志。相关代码如下:

import logging

from kivy.logger import Logger, LOG_LEVELS

if __name__ == '__main__':
    Logger.setLevel(LOG_LEVELS["info"])

    logger = logging.getLogger('poopoo')
    Logger.addFilter(logging.Filter('poopoo'))

    for i in range(5):
        Logger.debug('kivy')
        logger.debug('pylogger')

现象:Logger.debug('kivy')的输出被成功过滤,但logger.debug('pylogger')的输出未被过滤。尝试设置Kivy日志模式为MIXED或PYTHON后问题仍存在。

问题原因
  • Kivy的Logger与Python标准logging库是两个独立的日志实例体系:给Kivy Logger添加的过滤器仅对Kivy Logger自身生成的日志生效,无法作用于标准logging创建的logger对象。
  • 通过logging.getLogger('poopoo')创建的日志实例属于标准logging体系,它的日志输出规则(级别过滤、内容过滤)由标准logging的配置控制,和Kivy Logger的设置无关联。
  • 即使将Kivy日志模式设为MIXED或PYTHON,也只是让Kivy自身的日志输出转向标准logging体系,并不会让标准logging的日志自动遵循Kivy Logger的过滤规则。
解决方法

若需过滤标准logging中poopoo模块的日志,需直接对标准logging体系进行配置:

  1. 设置日志级别:给poopoo logger设置级别,低于该级别的日志会被过滤:
logger.setLevel(logging.INFO)
  1. 添加过滤器:给标准logging的处理器添加过滤器,过滤指定模块的日志:
# 遍历标准logging的所有根处理器并添加过滤器
for handler in logging.getLogger().handlers:
    handler.addFilter(logging.Filter('poopoo'))

内容的提问来源于stack exchange,提问作者frimann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:18:22