是否有人可能知道如何在Talend中获取错误消息?
我有tMSSqlInput
==> tMSSqlOutput
。 (见下面的架构)。
如果抛出错误,我想在邮件正文中找到它,并发送它,而不是默认发送邮件。
我找到了类似的东西:
globalMap.put("errorCode", input_row.message);
"The message is: "+(String)globalMap.get("errorCode")
但我不知道,在哪里放置第一行。显然它会在tMSSqlOutput
内的某个地方。但在哪里?
提前感谢你们。
答案 0 :(得分:2)
包括tmysqloutput在内的大多数talend组件都有错误消息(after),一旦组件失败或成功,它就可用。你可以在下一个组件中的组件后面访问这些变量中的值说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等下一个组件中使用它来发送电子邮件
答案 1 :(得分:1)
我们所做的是,使用“OnComponentError”链接将所有组件连接到tRowGenerator。现在,在tRowGenerator中,您可以创建类似ErrorDesc的列名,然后在Environment变量中,使用带有全局变量的三元运算符来获取错误消息。
(((String)globalMap.get(“tRowGenerator_1_ERROR_MESSAGE”))!= null)? “生成SP输入”+((String)globalMap.get(“tRowGenerator_1_ERROR_MESSAGE”)): (((String)globalMap.get(“tMysqlSP_2_ERROR_MESSAGE”))!= null)? “调用过程”+((String)globalMap.get(“tMysqlSP_2_ERROR_MESSAGE”)): (((String)globalMap.get(“tFileDelete_1_ERROR_MESSAGE”))!= null)? “tFileDelete”+((String)globalMap.get(“tFileDelete_1_ERROR_MESSAGE”)):“”
然后,您可以将此错误说明发送到电子邮件组件或显示在控制台上。