How do you get logging from the CXF Rest Client?

2019-02-27 08:50发布

This took me quite a long time to figure out. I'm asking this question so I can answer it for others:

How do you get useful logging info from the CXF Rest Client? EG: The url, params, payload, response, etc.

Note: This question already exists but it's asking about CXF and Resteasy. I only want the answer for CXF: Logging in CXF and RestEasy clients

2条回答
我只想做你的唯一
2楼-- · 2019-02-27 09:18

Here's how you do it with 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());
查看更多
劫难
3楼-- · 2019-02-27 09:27

Using the JAX-RS 2.0 client from CXF 3.1.x I am having some trouble getting the LoggingInInterceptor and LoggingOutInterceptor to work. I changed to use the LoggingFeature as described at http://cxf.apache.org/docs/message-logging.html and it worked first try:

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

查看更多
登录 后发表回答