使用Talend将作业日志添加到数据库中

时间:2017-02-03 12:53:55

标签: postgresql talend

我正在尝试将运行的作业的所有日志导入Postgres中的表。我正在使用组件tLogCatcher和tStatCatcher并将它们连接起来创建一个包含所有可用数据的表。

这份工作看起来像这样:

enter image description here

在tMap中,我在pid和作业名称上加入logcatcher和statcatcher的两个来源,并尝试合并结果以将它们组合在一个表中:

enter image description here

但是,只要作业失败,我就会在logcatcher输出中得到空值,即使有错误消息:

[statistics] connecting to socket on port 3696
[statistics] connected
2017-02-03 13:51:07|PR7710|PR7710|PR7710|6981|NASIA|Master_ETL_Job|_52dYEJUvEeaqS8phzVFskQ|0.1|Default||begin||
Exception in component tFileInputDelimited_1
java.io.FileNotFoundException: /Users/nasiantalla/Documents/keychain.csv (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at org.talend.fileprocess.TOSDelimitedReader.<init>(TOSDelimitedReader.java:88)
    at org.talend.fileprocess.FileInputDelimited.<init>(FileInputDelimited.java:164)
    at nasia.master_etl_job_0_1.Master_ETL_Job.tFileInputDelimited_1Process(Master_ETL_Job.java:796)
    at nasia.master_etl_job_0_1.Master_ETL_Job.runJobInTOS(Master_ETL_Job.java:6073)
    at nasia.master_etl_job_0_1.Master_ETL_Job.main(Master_ETL_Job.java:5879)
2017-02-03 13:51:08|PR7710|PR7710|PR7710|NASIA|Master_ETL_Job|Default|6|Java Exception|tFileInputDelimited_1|java.io.FileNotFoundException:/Users/nasiantalla/Documents/keychain.csv (No such file or directory)|1
2017-02-03 13:51:08|PR7710|PR7710|PR7710|6981|NASIA|Master_ETL_Job|_52dYEJUvEeaqS8phzVFskQ|0.1|Default||end|failure|890
[statistics] disconnected
Job Master_ETL_Job endet am 13:51 03/02/2017. [exit code=1]

在我的表格中,我得到的数据是这样的:

enter image description here

你看到我可能错过的东西吗?我尝试了tMap中的所有不同连接,但它似乎不起作用,我不明白为什么..

提前致谢!

2 个答案:

答案 0 :(得分:1)

他们有三个原因:

    如果没有tLogCatchertDie,则
  • tWarn不提供日志,我认为这是您的情况。

  • tLogCatchertStatCatcher无需同时提供数据,因为它们是由不同的事件触发的。所以加入不会匹配。

  • 从功能上来看,加入2流是没有意义的,它们是完全独立的。

我建议你将这些流转储到不同的表中,这可以隐式实现而不使用任何组件而不进行开发,请参阅here

答案 1 :(得分:1)

tStatCatcher加入时tLogCatchertMap不起作用。我无法给出明确的答案,但我认为它与“捕捉”错误和统计数据所涉及的特殊功能有关,可能是一个时间问题。例如,日志捕获器只会捕获错误,而统计信息可以捕获每个组件的统计信息。

我建议写入单独的表并加入这些表以生成报告。事实上,Talend内置了此功能,因此您甚至不需要在每个作业中提供自己的tStatCatchertLogCatcher组件。

您必须首先创建AMC数据库结构,然后转到文件 - &gt;编辑项目设置 - &gt;工作设置 - &gt;统计和日志。选择“在数据库上”选项。然后Talend将自动将统计信息,错误和流量记录到AMC数据库。你可以报告这个数据库 enter image description here

enter image description here