Как вести логи в Talend Open Studio

от автора

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, необходимо дополнить рабочий проект отдельной подзадачей:
image

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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *