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 в части формирования логов при разработке и развертывании своих решений.


Комментарии (2)


  1. ComatoZZZ
    27.12.2019 23:12

    Не удалось понять полную картину. Хотелось бы больше введения про сам продукт.