Apache CXF LoggingInInterceptor устарел - что использовать вместо этого? - PullRequest
0 голосов
/ 04 марта 2019

Я использую Apache CXF с Spring Boot с помощью плагина cxf-spring-boot-starter-jaxws версии 3.2.7.

Я собираюсь настроить LoggingInterceptors, но когда я создал следующий класс:

public class CustomLoggingInInterceptor extends org.apache.cxf.interceptor.LoggingInInterceptor {}

но моя IDE вычеркивает LoggingInInterceptor, жалуясь, что он устарел с объяснением

вместо этого используйте модуль ведения журнала rt / features / logging

Так как же это сделатьо настройке перехватчика регистрации с помощью этого модуля?

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

В основном требуется 4 вещи для обновления со старого на новое ведение журнала cxf (rt / features / logging).

Во-первых, установите функцию ведения журнала:

final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setFeatures(Collections.singletonList(new CustomLoggingFeature()));

Вы наделеныВам больше не нужны перехватчики (если вы их использовали, удалите их):

factory.getInInterceptors().add(new CustomMaskedLoggingInInterceptor()); factory.getOutInterceptors().add(new CustomMaskedLoggingOutInterceptor());

Во-вторых, создайте свою LoggingFeature:

public class CustomLoggingFeature extends org.apache.cxf.ext.logging.LoggingFeature {
    public CustomLoggingFeature() {
        super();
        this.setSender(new CustomEventLogSender());
    }
}

В-третьих, создайте свой EventLogSender:

public class CustomEventLogSender extends Slf4jVerboseEventSender {
    @Override
    protected String getLogMessage(LogEvent event) {
        String logMessage = super.getLogMessage(event);
        return CustomMasker.mask(logMessage);
    }
}

В-четвертых, создайте класс CustomMasker, в котором у вас есть собственная логика управления строками для маскировки нужной информации.

Дайте мне знатьесли бы это сработало!

0 голосов
/ 04 марта 2019

Это сообщение говорит вам об использовании модуля Apache CXF Advanced logging feature.

Его зависимость (последняя версия)

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-features-logging</artifactId>
    <version>3.3.0</version>
    <scope>test</scope>
</dependency>

Внутри вы найдете сопоставимый org.apache.cxf.ext.logging.LoggingInInterceptor ( ссылка )


Я не пользователь CXF, однако, полагаю, вам придется взаимодействовать с JaxWsProxyFactoryBean.
Помните, что вам нужно использоватьодна и та же версия для всех модулей CXF.

После того, как вы его держите, вы можете сделать

factory.getInInterceptors().add(new MyCustomInterceptor());
...