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

如何仅禁用Python中INFO日志文件的日志输出?

问题分析与解决方案

问题根源

你当前使用logging.disable(logging.ERROR)是全局日志禁用设置,它会阻止所有级别≤ERROR的日志输出。由于屏幕日志的handler级别是INFO(属于≤ERROR的范围),所以屏幕日志也被一并禁用了,这和你只想禁用INFO日志文件的需求不符。

正确解决方案

不要使用全局禁用,而是直接定位到记录INFO日志的file1 handler,将其从root logger中移除即可。同时要调整代码执行顺序,确保先加载日志配置,再进行handler的移除操作。

修改后的bot.py代码

import logging

LOG_INFO_DISABLE = 1  # 根据实际需求设置开关值

logger = logging.getLogger(__name__)

# ... 其他业务代码 ...

if __name__ == '__main__':
    import logging.config
    logging.config.fileConfig('logging.conf')
    
    # 仅禁用INFO日志文件的逻辑
    if LOG_INFO_DISABLE == 1:
        root_logger = logging.getLogger()
        # 遍历handler副本,避免修改原列表时引发异常
        for handler in root_logger.handlers[:]:
            # 通过handler类型和日志文件名定位到info.log的handler
            if isinstance(handler, logging.handlers.TimedRotatingFileHandler):
                if 'info.log' in handler.baseFilename:
                    root_logger.removeHandler(handler)
                    handler.close()  # 关闭文件句柄,释放资源

说明

  • 调整执行顺序:先加载日志配置,确保所有handler初始化完成后,再进行移除操作。
  • 精准定位目标:通过TimedRotatingFileHandler类型和info.log文件名,准确找到要禁用的日志文件handler,不会影响屏幕输出和ERROR日志文件。
  • 释放资源:移除handler后关闭文件句柄,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:57:23