如何配置auto-sklearn独立logging日志实现与主脚本日志分离
解决方案
核心原理是auto-sklearn所有内部日志都归属在autosklearn前缀的命名日志器下,不需要修改根日志器配置,只要单独绑定该命名日志器的输出即可。
调整后的日志配置部分
你只需要修改代码里的logging_config字典即可,修改后如下:
# 带日志配置的模型参数 logging_config = { "version":1, "disable_existing_loggers": False, "handlers":{ "spec_logger":{ 'level':'INFO', "class":"logging.FileHandler", 'filename':"dummy_autosklearn.log", }, }, 'loggers': { # 仅针对autosklearn命名空间的日志器配置,不影响根日志器 "autosklearn":{ "handlers":["spec_logger"], "level": "INFO", # 禁止日志向上传播到根日志器,避免同时出现在主日志中 "propagate": False }, }, }
改动说明
- 把原来配置根日志器的空字符串键
""替换为"autosklearn",仅匹配auto-sklearn内部输出的日志 - 新增
propagate: False配置,阻止auto-sklearn的日志向上传递到根日志器,避免同时写入主日志和控制台 - 保留
disable_existing_loggers: False,不会覆盖你之前配置的主日志器规则
最终效果
- 主脚本的
logger.info输出只会写入main.log和控制台,不会进入auto-sklearn的单独日志文件 - auto-sklearn运行过程中的所有日志只会写入
dummy_autosklearn.log,不会串入主日志流
内容的提问来源于stack exchange,提问作者tgrandje
相关产品推荐
相关产品推荐

