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

Airflow本地部署中DAG成功回调函数print输出日志位置查询

解决Airflow DAG回调函数print日志找不到的问题

核心原因

Airflow的DAG级回调函数(如on_success_callback)运行在Scheduler进程中,但默认情况下,Scheduler的日志不会自动写入~/airflow/logs/scheduler目录,且原生print语句的输出无法被Airflow日志系统捕获,导致你找不到对应输出。

具体解决步骤

1. 替换print为Airflow官方日志记录器

放弃使用print,改用Airflow内置的日志对象,确保输出被纳入Airflow日志体系:

from airflow.utils.log.logging_mixin import LoggingMixin

def dag_success_alert(context):
    logger = LoggingMixin().log
    logger.info("=== DAG成功回调上下文开始 ===")
    logger.info(f"Context所有键: {list(context.keys())}")
    for key in context.keys():
        logger.info(f"当前键: {key}")
        try:
            logger.info(f"{key}的内容: {context[key].__dict__}")
        except Exception as e:
            logger.info(f"解析{key}失败: {str(e)}")
    logger.info("=== DAG成功回调上下文结束 ===")

2. 定位正确的日志位置

  • Scheduler进程日志:如果用systemd管理Airflow,直接通过journalctl -u airflow-scheduler查看;如果是终端直接启动Scheduler,日志会输出在启动终端,也可以手动指定日志文件启动:
    airflow scheduler --log-file ~/airflow/logs/scheduler/scheduler.log
    
  • DAG运行日志:回调日志也会同步出现在Airflow UI的DAG运行记录中——进入UI找到目标DAG的运行实例,点击查看日志即可看到回调输出。

3. 检查并修正airflow.cfg日志配置

确保以下配置项正确,修改后需重启Scheduler和Webserver:

[logging]
# 日志级别保持INFO即可,无需强制改DEBUG
logging_level = INFO
# 确认日志目录路径正确且存在
base_log_folder = ~/airflow/logs
# 开启任务实例日志捕获
task_log_reader = task

4. 验证日志目录权限

确保Airflow运行用户拥有日志目录的读写权限:

chown -R $USER:$USER ~/airflow/logs
chmod -R 755 ~/airflow/logs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:07:10