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

Python配置logging后INFO级别日志无法写入log文件的问题

日志无法写入文件的修复方案

你的配置存在4处会直接导致日志失效的错误,逐个修正即可:

  • 字典语法错误:fileHandler配置段中'filename':'log_info.log'行末尾缺失逗号,Python解析字典时会直接报错
  • 处理器类路径错误:RotatingFileHandler的正确模块路径是logging.handlers.RotatingFileHandler,你写的logging.handler.RotatingFileHandler少了末尾的s,会导致类加载失败
  • 日志器配置键名、值格式错误:自定义xyz日志器的配置键错写为单数handler,正确键名是复数handlers;日志级别不需要套列表,且必须使用大写的INFO,小写info无法被logging模块识别
  • 日志器绑定关系错误:你只给xyz日志器绑定了文件处理器,但代码里获取的是root日志器,直接调用logging.info()也是走root日志器,而root日志器只绑定了wsgi流处理器,根本没有关联文件写入逻辑,自然不会把日志写到文件里。

修正后可直接运行的代码

如果需求是所有INFO级别日志同时输出到控制台、写入日志文件,直接把文件处理器加入root日志器的handlers列表即可,配置如下:

import logging.config

config = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {'default': {
        'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
    }},
    'handlers': {'wsgi': {
        'class': 'logging.StreamHandler',
        'stream': 'ext://flask.logging.wsgi_errors_stream',
        'formatter': 'default'
    },
    'fileHandler':{
        'class':'logging.handlers.RotatingFileHandler',
        'formatter':'default',
        'filename':'log_info.log',
        'maxBytes':512000,
        'backupCount':5,
        'encoding':'utf-8'
    }},
    'root': {
        'level': 'INFO',
        'handlers': ['wsgi', 'fileHandler']
    }
}

logging.config.dictConfig(config)
# 测试写入
logging.info('hi')

针对xyz目录下py文件的独立日志配置

如果需要xyz目录下的模块日志单独走文件规则、不输出到控制台,保留xyz日志器配置即可,注意修正键名和值格式,同时xyz目录下的所有py文件必须通过logging.getLogger(__name__)获取日志对象,这样生成的日志器名称会是xyz.abcd、xyz.efg格式,能自动匹配到你配置的xyz日志器规则,对应配置片段:

'xyz':{
    'handlers':['fileHandler'],
    'level':'INFO',
    'propagate': False
}

propagate设为False可以避免xyz模块的日志向上传递给root日志器,防止控制台重复打印日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:54:31