Talend Open Studio for ESB — free-to-download инструмент на основе визуальных компонентов, предназначенный для интеграции приложений и бизнес-систем в гетерогенной инфраструктуре предприятия.
Open Studio for ESB условно разбит на две части:
- Studio — IDE на основе Eclipse, в котором производят разработку решения (Talend Job);
- Runtime — сборка на основе Apache Karaf, которая является контейнером микросервисов.
Продукты Talend имеют специальный компонент для ведения логов: tLogRow, однако экспорт в log4j умышленно доступен только в продуктах, распространяемых по подписке.
Лог в Studio
Чтобы получать лог компонентов при отладке проекта, необходимо изменить priority в файле конфигурации и, при необходимости, включить требумые appender-ы в файле конфигурации: File> Edit>Edit Project Properties > Log4j
Так, для получения логов компонента tRESTRequest, достаточно включить Advanced settings > Log messages в компоненте и изменить priority на "info":
<!-- Root Logger -->
<root>
<priority value ="info"/>
...
</root>
В процессе выполнения задачи могут перехватываться три типа событий:
- событие компонента tWarn — событие в рабочем потоке;
- событие компонента tDie — событие, терминирующее рабочий поток;
- событие Java Exception — внутреннее исключение в рабочем потоке;
Для перехвата событий существует компонент tLogCatcher, у которого есть возможность выбора комбинации типов перехватываемых событий.
В принципе, все эти события генерируют текстовые сообщения в отладочную консоль IDE.
Однако, если необходимо читать эти сообщения в Runtime, необходимо дополнить рабочий проект отдельной подзадачей:
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, но и в log4j генерируемого IDE сервиса в Runtime.
Обратите внимание, tLogCatcher не перехватывает события SubJob в составе текущего Talend Job. Соответственно, приводимая выше конструкция должна присутствовать в каждом SubJob, где требуется вести лог.
Лог в Runtime
Runtime лог в общем случае пишется в ${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 в части формирования логов при разработке и развертывании своих решений.
ComatoZZZ
Не удалось понять полную картину. Хотелось бы больше введения про сам продукт.
spot62 Автор
Что такое Talend Studio
Как создать Talend Job