如何拦截Mega类upload方法中的logger.info日志并输出到控制台
解决Mega上传时无法显示INFO日志的问题
问题原因
Python标准库logging默认只输出WARNING及更高级别的日志,而mega.mega模块中使用的logger.info()属于INFO级别,且该模块的Logger默认没有配置控制台输出的Handler,导致这些日志无法在控制台显示。
解决方案
方案1:单独配置mega.mega的Logger(推荐)
仅针对目标模块的Logger配置,避免干扰其他第三方库的日志输出:
import logging from mega.mega import Mega # 获取mega.mega模块对应的Logger实例 mega_logger = logging.getLogger('mega.mega') # 设置日志级别为INFO,确保INFO及以上日志被处理 mega_logger.setLevel(logging.INFO) # 添加控制台输出Handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) # 可选:自定义日志格式 log_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') console_handler.setFormatter(log_formatter) # 将Handler绑定到mega的Logger mega_logger.addHandler(console_handler) # 正常执行上传流程 email = "你的邮箱地址" password = "你的密码" mega = Mega() m = mega.login(email, password) m.upload('sample_file.txt')
方案2:配置全局根Logger
如果需要所有模块的INFO级别日志都输出到控制台,可直接配置根Logger:
import logging from mega.mega import Mega # 全局配置日志级别和格式 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # 正常执行上传流程 email = "你的邮箱地址" password = "你的密码" mega = Mega() m = mega.login(email, password) m.upload('sample_file.txt')
补充说明
- 方案1更精准,仅对
mega.mega模块生效,不会输出其他库的冗余日志; - 方案2会让所有使用
logging的模块都输出INFO及以上日志,适合多模块调试场景; - 若配置后仍无日志输出,可检查
mega.mega模块是否设置了logger.propagate = False(默认值为True,允许日志向上传播到根Logger)。
内容的提问来源于stack exchange,提问作者django
相关产品推荐
相关产品推荐

