Переопределение или перехват верблюдов - PullRequest
0 голосов
/ 16 мая 2018

Существующее приложение использует ведение журнала Camel (bog DSL "log ()", а также компонент Log.

Мы хотели бы либо перехватить, либо переопределить, чтобы каждое сообщение журнала также выходило из определенного заголовказначение (например, x-correlation-id = ABC-123)

Какой хороший идиоматический способ добиться этого?

1 Ответ

0 голосов
/ 16 мая 2018

Apache Camel поддерживает возможность подключения LogListener с версии 2.19.0.Это довольно мощный инструмент, потому что его метод onLog, который вызывается непосредственно перед регистрацией, имеет экземпляры Exchange, CamelLogger и message.Вы можете настроить сообщение там почти без ограничений.

Реализация LogListener:

public class MyLogListener implements LogListener {
    @Override
    public String onLog(Exchange exchange, CamelLogger camelLogger, String message) {
        return String.format("%s: %s", exchange.getIn().getHeader(Exchange.CORRELATION_ID), message);
    }
}

Регистрация LogListener:

getContext().addLogListener(new MyLogListener());

Если вы используете Apache Camel версии 2.21.0 и новее, вам не нужно регистрировать его в контексте, так как он просматривается в реестре, поэтому достаточно аннотировать MyLogListener как @Bean.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...