Как вы получаете ведение журнала от клиента CXF Rest?


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

Как получить полезную информацию для ведения журнала от клиента CXF Rest? Например: url, параметры, полезная нагрузка, ответ и т. д.

Примечание: этот вопрос уже существует, но он спрашивает о CXF и Resteasy. Мне нужен только ответ для CXF: вход в CXF и клиенты RestEasy

2 2

2 ответа:

Вот как вы это делаете с CXF:

import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxrs.client.ClientConfiguration;
import org.apache.cxf.jaxrs.client.WebClient;
import org.json.JSONException;
import org.json.JSONObject;
...
    WebClient client = WebClient.create(endPoint, providers).accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON);
    ClientConfiguration config = WebClient.getConfig(client);
    config.getInInterceptors().add(new LoggingInInterceptor());
    config.getOutInterceptors().add(new LoggingOutInterceptor());

Использование клиента JAX-RS 2.0 из CXF 3.1.x у меня возникли некоторые проблемы с получением LoggingInInterceptor и LoggingOutInterceptor для работы. Я изменил, чтобы использовать LoggingFeature, как описано в http://cxf.apache.org/docs/message-logging.html и это сработало с первой попытки:

Client client = ClientBuilder.newBuilder().register(LoggingFeature.class).build()