Отключить ведение журнала CXF для одного метода в веб-сервисе - PullRequest
0 голосов
/ 17 октября 2018

Как отключить вход в один метод cxf перехватчик?

Можно отключить все входящие запросы или все исходящие запросы :

<logger name="org.apache.cxf.services.MyService.REQ_OUT" level="ERROR"/>
<logger name="org.apache.cxf.services.MyService.RESP_IN" level="ERROR"/>

Но я не могу отключить журналы по одному методу в MyService

Я нашел один ответ, аналогичный тому, что я хочу: ссылка

Но это не совсем понятно.Я не знаю, где мне следует переопределить метод:

@ Переопределить защищенное преобразование String (String originalLogString) {if (doNotLog) {return null;} return originalLogString;}

И я не знаю, является ли это рабочим примером.

1 Ответ

0 голосов
/ 18 октября 2018

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

В примере, который я написал в своем вопросе, использовалась старая версия регистратора (с пометкой).В новой версии org.apache.cxf.ext.logging.LoggingInInterceptor метод transform не существует

Это решение с новым регистратором:

import org.apache.cxf.ext.logging.LoggingInInterceptor;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;

import java.util.List;
import java.util.TreeMap;

public class UnpLoggingInInterceptor extends LoggingInInterceptor {

    private static final String GET_RESPONSE = "urn:GetResponse";

    @Override
    public void handleMessage(Message message) throws Fault {
        TreeMap<String, List> headers = (TreeMap<String, List>) message.get("org.apache.cxf.message.Message.PROTOCOL_HEADERS");

        if (headers != null) {
            List value = headers.get("SOAPAction");
            String soapAction = value != null ? (String) value.get(0) : "";
            if (soapAction.replace("\"", "").equalsIgnoreCase(GET_RESPONSE)) {
                isLoggingDisabledNow(message);
                return;
            }
        }
        super.handleMessage(message);
    }
}
...