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 в части формирования логов при разработке и развертывании своих решений.
ссылка на оригинал статьи https://habr.com/ru/post/482262/
Добавить комментарий