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

如何通过编程方式获取Airflow日志并存储为字符串变量?

解决Airflow编程获取任务日志并转为字符串的问题

你之前的代码里ti.log是Airflow用于写入日志的Logger对象,不是已生成的日志内容,所以打印出来是Logger实例的描述。要获取任务实例的日志内容,需要用Airflow的日志阅读器来读取,具体实现如下:

import logging
from airflow.models import TaskInstance

def fetch_logs(context):
    ti: TaskInstance = context['ti']
    # 获取当前任务实例的日志阅读器
    log_reader = ti.log_reader
    # 读取对应重试次数的日志,这里使用当前任务的重试次数
    logs_content = log_reader.read_log(
        task_instance=ti,
        try_number=ti.try_number
    )
    # logs_content即为日志的字符串形式,可直接用于后续逻辑
    logging.info("获取到的任务日志:\n%s", logs_content)
    return logs_content

补充说明:

  • read_log方法默认读取对应任务实例指定重试次数的全部日志,你也可以通过添加start_line和end_line参数来读取指定范围的日志内容
  • 该方法适配Airflow 2.x版本,不同版本的日志阅读器API可能略有差异,若使用旧版本可查看对应版本的官方文档调整参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:29:51