Как настроить трассировку маршрута в Apache Camel> = 3? - PullRequest
2 голосов
/ 09 апреля 2020

Я пытаюсь перейти с Camel 2.X на 3.X и столкнулся с вопросом о регистрации трассировки маршрутизации. Ранее я настроил это так в контексте приложения xml -file:

<bean id="camelTracer" class="org.apache.camel.processor.interceptor.Tracer">
    <property name="traceExceptions" value="false" />
    <property name="traceInterceptors" value="true" />
    <property name="logLevel" value="DEBUG" />
    <property name="logName" value="com.mycompany.routing.trace" />
</bean>

<bean id="traceFormatter" class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
    <property name="showBody" value="true" />
    <property name="maxChars" value="0" />
</bean>

Но это, очевидно, больше не работает. Из руководства по миграции на веб-сайте Camel:

"Был реализован новый трассировщик, а старый трассер удален. Новый трассировщик регистрирует сообщения в организации. apache .camel. hardcoded. Формат вывода также обновляется, чтобы сделать его лучше. Трассировщик может быть настроен. "

Если я установил .tracing() в начале моих маршрутов, он регистрирует трассировку. Это жестко закодированное имя, но я хотел бы, среди прочего, изменить уровень с INFO на DEBUG.

Кто-нибудь знает, где найти информацию о том, как настроить этот «новый» трассировщик (желательно в applicationContext. xml file)? Или где-нибудь еще, может быть, на маршруте Java DSL? Или если это вообще возможно?

Спасибо!

1 Ответ

2 голосов
/ 09 апреля 2020

Уровень ведения журнала DefaultTracer не может быть изменен конфигурацией. Вам нужно реализовать настроенный Tracer и связать эту реализацию с реестром.

Tracer:

public class TracerCustom extends DefaultTracer {
    private static final Logger LOG = LoggerFactory.getLogger("com.stackoverflow.camel.TracerCustom");

    @Override
    protected void dumpTrace(String out) {
        LOG.debug(out);
    }
    // Customize other methods if needed
}

Контекст Spring:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <bean class="com.stackoverflow.camel.TracerCustom" />

  <camelContext id="tracerCamelContext" xmlns="http://camel.apache.org/schema/spring">
    <route trace="true">
      <from uri="timer:test"/>
      <to uri="log:test"/>
    </route>
  </camelContext>

</beans>
...