Python logging dictConfig加载配置文件报错求助
解决Python logging dictConfig加载配置时的ValueError问题
错误原因
- 传参错误:
logging.config.dictConfig()需要传入配置字典对象,你直接传了文件名字符串'logging.conf',函数会尝试把字符串当作字典处理,导致格式不匹配报错。 - 配置格式不匹配:你的
logging.conf是YAML格式(冒号+缩进的语法),不是dictConfig可直接识别的字典结构,即使读取文件内容,也需要先解析成字典才能使用。
解决方法
方法1:保留YAML格式,用PyYAML解析配置
如果想继续使用现有YAML格式的配置文件,需要借助PyYAML库解析:
- 先安装依赖:
pip install pyyaml
- 修改代码加载配置:
import logging import logging.config import yaml # 读取YAML文件并解析为字典 with open('logging.conf', 'r') as config_file: config_dict = yaml.safe_load(config_file) # 应用日志配置 logging.config.dictConfig(config_dict)
方法2:将配置转为JSON格式
把logging.conf修改为标准JSON格式(注意JSON要求键用双引号,结构用大括号/中括号包裹):
{ "version": 1, "formatters": { "simple": { "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s" } }, "handlers": { "console": { "class": "logging.StreamHandler", "level": "ERROR", "formatter": "simple", "stream": "ext://sys.stdout" } }, "loggers": { "root": { "level": "ERROR", "handlers": ["console"] } } }
然后用JSON库加载配置:
import logging import logging.config import json # 读取JSON文件并解析为字典 with open('logging.conf', 'r') as config_file: config_dict = json.load(config_file) # 应用日志配置 logging.config.dictConfig(config_dict)
内容的提问来源于stack exchange,提问作者Neil Benn
相关产品推荐
相关产品推荐

