Apache Airflow SmartSensor日志重复打印问题如何修复
Airflow 2.0.2 Smart Sensor日志重复打印问题解决方案
根本原因
该问题属于Airflow 2.0.x版本Smart Sensor功能的原生已知缺陷,并非自定义传感器代码错误导致,核心原因是Smart Sensor服务运行时,自身的日志处理器被重复注册,同一条日志会被多个处理器同时输出,最终出现重复打印的现象。你观察到的只有smart_sensor.py输出的日志重复、自定义传感器lakeview.py的日志没有重复的特征,也完全符合该缺陷的表现。
可用解决方案
方案1:升级Airflow版本(推荐)
该日志重复bug已在Airflow 2.1.0及后续版本被官方修复,直接将部署的Airflow版本升级至2.1.0+即可彻底解决问题。
方案2:修改日志配置适配旧版本
如果当前环境暂时无法升级Airflow版本,可通过关闭日志传播的方式解决重复输出:
- 方式一:修改Airflow日志配置文件
log_config.py,给smart_sensor对应的日志器添加propagate = False配置,避免日志向上层父日志器重复传递。 - 方式二:直接修改Airflow源码里的
smart_sensor.py文件,在日志初始化逻辑后添加如下代码:
self.log.propagate = False
方案3:临时规避方案
如果既不想升级版本也不想修改源码,可临时调整Smart Sensor相关日志的输出级别,将smart_sensor.py对应日志的级别从INFO调整为DEBUG,生产环境不开DEBUG级别日志时就不会出现重复打印的情况,该方案仅作为临时应急使用,不建议长期采用。
自定义传感器代码校验
你提供的LakeviewSensor代码完全符合Smart Sensor的适配要求,poke_context_fields配置、兼容方法的重写逻辑均无错误,不需要调整自定义传感器的代码。
内容的提问来源于stack exchange,提问作者Sakthi Priyan H
相关产品推荐
相关产品推荐

