使用dictConfig配置Python logging报错:FileHandler无split属性
解决logging dictConfig配置时的AttributeError问题
这个错误的根源是一个很容易忽略的细节:你在配置文件处理器的class字段时,传入了类对象而非字符串形式的类路径。
看报错信息里的关键提示:AttributeError: type object 'FileHandler' has no attribute 'split'——dictConfig内部会对class字段的值调用split('.')来解析类的模块路径,但你直接传了logging.FileHandler这个类对象,它自然没有split方法,所以触发了错误。
修复方法
只需要把handler配置里的class值改成字符串形式的类全名即可:
logfile_handler_conf = { "class": "logging.FileHandler", # 这里改为字符串形式的类路径 "level": logging.DEBUG, "formatter": "verbose_formatter", "filename": "logfile.txt", "mode": "w", "encoding": "utf-8", }
额外提醒
还有个小问题需要注意:你最后获取日志器用的是logging.getLogger(__name__),但你的配置里只定义了名为"verbose_file_logger"的日志器。如果想让当前模块的日志使用你配置的文件处理器,需要改成:
logger = logging.getLogger("verbose_file_logger")
或者调整配置里loggers的键为当前模块的__name__,或者配置root日志器来应用全局规则。
内容的提问来源于stack exchange,提问作者fleetingbytes
相关产品推荐
相关产品推荐

