如何配置ADF或Logic App以获取管道失败的准确错误邮件通知?
如何在ADF+Logic App邮件通知中获取管道失败的具体错误信息
一、ADF端配置:传递完整错误上下文
若用管道失败分支触发Logic App:
在管道的失败分支添加「Web活动」调用Logic App,请求体里明确传入错误相关字段,示例表达式如下:{ "DataFactoryName": "@pipeline().DataFactory", "PipelineName": "@pipeline().Pipeline", "PipelineRunId": "@pipeline().RunId", "Time": "@utcNow()", "ErrorMessage": "@activity('具体失败活动名称').error.message", "ErrorDetails": "@activity('具体失败活动名称').error.details", "Information": "@concat(pipeline().DataFactory, ' ', pipeline().Pipeline, ' FAILED')" }若要获取管道级别的全局错误,可替换为
@pipeline().Error.Message。若用Logic App自带的「当Azure Data Factory管道运行失败时」触发器:
该触发器会自动携带管道运行的完整元数据(包括错误对象),无需在ADF额外配置传递逻辑,直接在Logic App中提取即可。
二、Logic App端提取并展示错误信息
- 解析JSON(可选但推荐):
在触发器后添加「解析JSON」动作,以ADF发送的请求体为输入,自动生成对应的JSON Schema,方便后续字段引用。 - 修改邮件内容:
将原邮件中的占位符Message替换为实际错误字段,示例引用方式:- 若用ADF分支Web活动触发:
- "DataFactoryName": @{body('解析_JSON')?['DataFactoryName']} - "PipelineName": @{body('解析_JSON')?['PipelineName']} - "PipelineRunId": @{body('解析_JSON')?['PipelineRunId']} - "Time": @{body('解析_JSON')?['Time']} - "ErrorMessage": @{body('解析_JSON')?['ErrorMessage']} - "ErrorDetails": @{body('解析_JSON')?['ErrorDetails']} - "Information": @{body('解析_JSON')?['Information']} - 若用Logic App自带ADF触发器:
- "DataFactoryName": @{triggerBody()?['dataFactoryName']} - "PipelineName": @{triggerBody()?['pipelineName']} - "PipelineRunId": @{triggerBody()?['runId']} - "Time": @{triggerBody()?['eventTime']} - "ErrorMessage": @{triggerBody()?['error']?['message']} - "ErrorDetails": @{triggerBody()?['error']?['details']} - "Information": @{concat(triggerBody()?['dataFactoryName'], ' ', triggerBody()?['pipelineName'], ' FAILED')}
- 若用ADF分支Web活动触发:
三、验证配置
手动触发ADF管道并使其失败,查看Logic App运行日志确认错误字段是否被正确提取,再检查收到的邮件是否包含具体错误描述(如连接超时、字段映射错误、数据源不存在等)。
内容的提问来源于stack exchange,提问作者Rohit Kulkarni
相关产品推荐
相关产品推荐

