apache cxf LoggingFeature mask чувствительная информация - PullRequest
0 голосов
/ 14 декабря 2018

Я использую функцию ведения журнала для входа / выхода сообщения на мой сервер cxf rest при загрузке Spring.Точно так же, используя то же самое, чтобы регистрировать исходящие соединения API Rest, инициированные cxf WebClient.

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

В Интернете я обнаружил, что предыдущий (теперь устаревший) LoginIntercepter имел операцию преобразования для изменения записи журнала.Я не смог найти решение для маскировки / усечения записей журнала wirg LoggingFeature.

приветствуется любая помощь

Текущая конфигурация функции ведения журнала на сервере приведена ниже.

factory.setProviders(providers);
LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
loggingFeature.setLogBinary(false);
loggingFeature.setLogMultipart(false);
factory.getFeatures().add(loggingFeature);
Server server = factory.create();

Конфигурация веб-клиента указана ниже

 LoggingFeature loggingFeature = new LoggingFeature();
loggingFeature.setPrettyLogging(true);
WebClient client = WebClient.create(url, Collections.singletonList(new JacksonJsonProvider()),
    Arrays.asList(loggingFeature), null);

1 Ответ

0 голосов
/ 14 декабря 2018

Чтобы изменить сообщение журнала, вы можете ...

Написать собственный LogSender и установить его в LoggingFeature для ведения собственного ведения журнала.Все метаданные могут быть доступны [ed] из класса LogEvent.

(Источник: http://cxf.apache.org/docs/message-logging.html)

С отправителем типа:

// ...
import org.apache.cxf.ext.logging.event.LogEvent;

class MyLogEventSender implements org.apache.cxf.ext.logging.event.LogEventSender {

    @Override
    public void send(LogEvent event) {
       event.setPayload(maskSensibleParameters(event.getPayload()));
    }

    private String maskSensibleParameters(String pIn) {
       // here goes the tricky part 
       // ... but no details on this in your question 
       // ... here you can stick to "old" LogInterceptor examples
       // ... and also to PrettyLoggingFilter.
    }
}

AПример кода приведен (по умолчанию) PrettyLoggingFilter .

Чтобы замаскировать (скрыть) это (полностью) проще и гарантированно более производительно, это зависит от используемой "среды ведения журналов" (Java).util, log4j или slf4j) и выполняется с соответствующей «конфигурацией логгера». ( см. здесь )

...