使用 Talend 将作业日志添加到数据库中
Adding logs of jobs into a database with Talend
我正在尝试将作业 运行 的所有日志导入 Postgres 中的 table。我正在使用组件 tLogCatcher 和 tStatCatcher 并加入它们以创建一个包含所有可用数据的 table。
工作看起来像这样:
在 tMap 中,我在 pid 和作业名称上加入了 logcatcher 和 statcatcher 的两个来源,并尝试合并结果以将它们合并到 table:
然而,每当作业失败时,即使有错误消息,我也会在 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]
而在我的 table 中,我得到的数据是这样的:
你看到我可能错过的东西了吗?我在 tMap 中尝试了所有不同的连接,但它似乎不起作用,我不明白为什么..
提前致谢!
有 3 个原因:
tLogCatcher
如果没有 tDie
或 tWarn
,则不提供日志,我认为这是你的情况。
tLogCatcher
和tStatCatcher
没有必要同时提供数据,因为它们是由不同的事件触发的。所以join不会匹配。
从功能的角度来看,加入2个流程没有意义,它们是完全独立的。
我建议您将这些流转储到不同的表中,这可以在不使用任何组件且无需开发的情况下隐式实现,请参见here。
tStatCatcher
和 tLogCatcher
在与 tMap
连接时不起作用。我无法就原因给出明确的答案,但我认为它与 'catching' 错误和统计信息中涉及的特殊功能有关,并且可能是时间问题。例如,日志捕获器只会捕获错误,而统计信息可以捕获每个组件的统计信息。
我建议写入单独的表并加入这些表以生成报告。事实上,Talend 内置了此功能,因此您甚至不需要在每个作业中提供自己的 tStatCatcher
和 tLogCatcher
组件。
您必须先创建AMC 数据库结构,然后转到文件--> 编辑项目设置--> 作业设置--> 统计和日志。选择 'on database' 选项。然后 Talend 会自动将统计信息、错误和流记录到 AMC 数据库。你可以举报这个数据库。
我正在尝试将作业 运行 的所有日志导入 Postgres 中的 table。我正在使用组件 tLogCatcher 和 tStatCatcher 并加入它们以创建一个包含所有可用数据的 table。
工作看起来像这样:
在 tMap 中,我在 pid 和作业名称上加入了 logcatcher 和 statcatcher 的两个来源,并尝试合并结果以将它们合并到 table:
然而,每当作业失败时,即使有错误消息,我也会在 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]
而在我的 table 中,我得到的数据是这样的:
你看到我可能错过的东西了吗?我在 tMap 中尝试了所有不同的连接,但它似乎不起作用,我不明白为什么..
提前致谢!
有 3 个原因:
tLogCatcher
如果没有tDie
或tWarn
,则不提供日志,我认为这是你的情况。tLogCatcher
和tStatCatcher
没有必要同时提供数据,因为它们是由不同的事件触发的。所以join不会匹配。从功能的角度来看,加入2个流程没有意义,它们是完全独立的。
我建议您将这些流转储到不同的表中,这可以在不使用任何组件且无需开发的情况下隐式实现,请参见here。
tStatCatcher
和 tLogCatcher
在与 tMap
连接时不起作用。我无法就原因给出明确的答案,但我认为它与 'catching' 错误和统计信息中涉及的特殊功能有关,并且可能是时间问题。例如,日志捕获器只会捕获错误,而统计信息可以捕获每个组件的统计信息。
我建议写入单独的表并加入这些表以生成报告。事实上,Talend 内置了此功能,因此您甚至不需要在每个作业中提供自己的 tStatCatcher
和 tLogCatcher
组件。
您必须先创建AMC 数据库结构,然后转到文件--> 编辑项目设置--> 作业设置--> 统计和日志。选择 'on database' 选项。然后 Talend 会自动将统计信息、错误和流记录到 AMC 数据库。你可以举报这个数据库。