Talend Open Studio for ESB是一个免费下载的工具,基于视觉组件,旨在将应用程序和业务系统集成到异构企业基础架构中。
ESB的Open Studio有条件地分为两个部分:
- Studio-在其中开发解决方案的基于Eclipse的IDE(Talend Job);
- 运行时是基于Apache Karaf的构建,是微服务的容器。
Talend产品具有用于日志记录的特殊组件:tLogRow,但是,仅在通过订阅分发的产品中有意导出到log4j。
工作室日志
要在调试项目时获取组件日志,您需要在配置文件中更改优先级,并在必要时在配置文件中启用所需的附加程序: File→Edit→Edit Project Properties→Log4j
因此,要获取tRESTRequest组件的日志,只需打开高级设置→在该组件中记录消息 ,然后将优先级更改为“ info”:
<!-- Root Logger --> <root> <priority value ="info"/> ... </root>
在执行任务期间,可以截获三种类型的事件:
- tWarn组件事件-工作流中的事件;
- tDie组件事件-终止工作流的事件;
- Java异常事件-工作流中的内部异常;
为了拦截事件,有一个组件tLogCatcher,它能够选择所拦截事件的类型的组合。
基本上,所有这些事件都会在IDE调试控制台中生成文本消息。
但是,如果需要在运行系统中阅读这些消息,则需要用单独的子任务补充工作草案:

tJavaRow应该包含以下或类似的代码:
if(input_row.message != null){ org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); if(input_row.type != null) org.apache.log4j.MDC.put("subjectTag", input_row.type); switch (input_row.priority){ case 0: case 1: case 2: case 3: log.info(input_row.message); break; case 4: log.warn(input_row.message); break; case 5: log.error(input_row.message); break; default: log.fatal(input_row.message); break; } }
因此,tLogCatcher事件不仅会进入IDE控制台,而且会进入运行时中生成的IDE服务的log4j。
请注意, tLogCatcher不会将SubJob事件作为当前Talend作业的一部分进行拦截 。 因此,上面给出的设计应该存在于每个需要日志的SubJob中。
运行日志
运行时日志通常写在$ {karaf.home} /log/tesb.log中
从Talend Runtime的角度来看,$ {karaf.home}是./Runtime_ESBSE/container的子目录
日志格式的配置在文件$ {karaf.home} /etc/org.ops4j.pax.logging.cfg中完成
要配置Karaf中的日志,最好使自己熟悉官方文档: http : //karaf.apache.org/manual/latest/#_log
如有必要,可以将本地日志导出到外部系统,例如,使用外部filebeat或使用内部Karaf Apache Decanter工具。
本文的目的是使初学者可以在开发和部署他们的解决方案时简化Talend OS在日志记录方面的工作。