如何在 Talend 中获取错误消息以便通过电子邮件发送?
How to get an errored message in Talend in order to send it by email?
有谁知道如何在 Talend 中获取错误消息?
我有一个 tMSSqlInput
==> tMSSqlOutput
。 (请参阅下面的架构)。
如果抛出错误,我想在邮件正文中获取并发送,而不是默认发送消息。
我发现了类似的东西:
globalMap.put("errorCode", input_row.message);
"The message is: "+(String)globalMap.get("errorCode")
但我不知道第一行放在哪里。显然它会在 tMSSqlOutput
内的某个地方。但是在哪里呢?
提前谢谢大家。
包括 tmysqloutput 在内的大多数 talend 组件都有错误消息(之后),一旦组件失败或成功,它就可用。您可以访问这些变量中的值 post 下一个组件中的组件说 tMysqloutput --->(OnComponentOK)---->tJava ...在 tJava 中,您可以通过使用查看 tmysqloutput 组件中的内容下面的表达式 - System.out.println((String)globalMap.get("tMysqlOutput_1_ERROR_MESSAGE"));
您可以将此错误消息存储在全局变量中,然后在您的 tSendEmail 组件中使用此全局变量。
要为全局变量赋值,您可以使用 globalMap.out("variableName",value);
获取这个值
(字符串)globalMap.get("variableName")
另一种方法是在您的应用程序中添加 tLogCatcher 并在您的组件中启用 Die on error 选项。将会发生的是,现在当出现异常时,tLogCAtcher 将捕获消息和代码,您可以将 tLogCatcher 连接到其他组件以获取此错误代码,并在下一个组件(例如 tSendEmail)中使用它来发送电子邮件
我们所做的是,使用 "OnComponentError" link 将所有组件连接到 tRowGenerator。现在,在 tRowGenerator 中,您可以创建一个像 ErrorDesc 这样的列名,然后在环境变量中,使用带有全局变量的三元运算符来获取错误消息。
(((String)globalMap.get("tRowGenerator_1_ERROR_MESSAGE"))!= null)? "Generate SP Inputs " + ((String)globalMap.get("tRowGenerator_1_ERROR_MESSAGE")):
(((String)globalMap.get("tMysqlSP_2_ERROR_MESSAGE"))!= null)? "CALL the procedure " + ((String)globalMap.get("tMysqlSP_2_ERROR_MESSAGE")) :
(((String)globalMap.get("tFileDelete_1_ERROR_MESSAGE"))!= null)? "tFileDelete " + ((String)globalMap.get("tFileDelete_1_ERROR_MESSAGE")) : " "
然后您可以将此错误描述发送到电子邮件组件或显示在控制台上。
有谁知道如何在 Talend 中获取错误消息?
我有一个 tMSSqlInput
==> tMSSqlOutput
。 (请参阅下面的架构)。
如果抛出错误,我想在邮件正文中获取并发送,而不是默认发送消息。
我发现了类似的东西:
globalMap.put("errorCode", input_row.message);
"The message is: "+(String)globalMap.get("errorCode")
但我不知道第一行放在哪里。显然它会在 tMSSqlOutput
内的某个地方。但是在哪里呢?
提前谢谢大家。
包括 tmysqloutput 在内的大多数 talend 组件都有错误消息(之后),一旦组件失败或成功,它就可用。您可以访问这些变量中的值 post 下一个组件中的组件说 tMysqloutput --->(OnComponentOK)---->tJava ...在 tJava 中,您可以通过使用查看 tmysqloutput 组件中的内容下面的表达式 - System.out.println((String)globalMap.get("tMysqlOutput_1_ERROR_MESSAGE"));
您可以将此错误消息存储在全局变量中,然后在您的 tSendEmail 组件中使用此全局变量。 要为全局变量赋值,您可以使用 globalMap.out("variableName",value); 获取这个值 (字符串)globalMap.get("variableName")
另一种方法是在您的应用程序中添加 tLogCatcher 并在您的组件中启用 Die on error 选项。将会发生的是,现在当出现异常时,tLogCAtcher 将捕获消息和代码,您可以将 tLogCatcher 连接到其他组件以获取此错误代码,并在下一个组件(例如 tSendEmail)中使用它来发送电子邮件
我们所做的是,使用 "OnComponentError" link 将所有组件连接到 tRowGenerator。现在,在 tRowGenerator 中,您可以创建一个像 ErrorDesc 这样的列名,然后在环境变量中,使用带有全局变量的三元运算符来获取错误消息。
(((String)globalMap.get("tRowGenerator_1_ERROR_MESSAGE"))!= null)? "Generate SP Inputs " + ((String)globalMap.get("tRowGenerator_1_ERROR_MESSAGE")): (((String)globalMap.get("tMysqlSP_2_ERROR_MESSAGE"))!= null)? "CALL the procedure " + ((String)globalMap.get("tMysqlSP_2_ERROR_MESSAGE")) : (((String)globalMap.get("tFileDelete_1_ERROR_MESSAGE"))!= null)? "tFileDelete " + ((String)globalMap.get("tFileDelete_1_ERROR_MESSAGE")) : " "
然后您可以将此错误描述发送到电子邮件组件或显示在控制台上。