Java 无法在jersey rest框架中记录请求负载

Java 无法在jersey rest框架中记录请求负载,java,rest,jersey,Java,Rest,Jersey,我正在尝试使用jersey REST框架将请求负载记录到我的REST API中 public class PostPayloadFilter implements ContainerRequestFilter { @Context HttpServletRequest tempRequest; public ContainerRequest filter(ContainerRequest request) { // TODO Auto-generated method stub

我正在尝试使用jersey REST框架将请求负载记录到我的REST API中

public class PostPayloadFilter implements ContainerRequestFilter {
@Context HttpServletRequest tempRequest;
public ContainerRequest filter(ContainerRequest request) {
    // TODO Auto-generated method stub
    if (!(request.getMethod().equalsIgnoreCase("POST") || request.getMethod().equalsIgnoreCase("PUT")))
        return request;

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    InputStream in = null;;
    try {
        in = tempRequest.getInputStream();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        ReaderWriter.writeTo(in, out);

        byte[] requestEntity = out.toByteArray();
        String payLoad = new String(requestEntity,"UTF-8");
        payLoad = payLoad + "\n";
        payLoad = payLoad.trim();
        request.setEntityInputStream(new ByteArrayInputStream(requestEntity));
        return request;
    } catch (IOException ex) {
        throw new ContainerException(ex);
    }

}
}

我正在尝试将请求记录在第二个try-catch块中。它记录所有内容,但不记录我正在使用的有效负载数据

request.setEntityInputStream(new ByteArrayInputStream(requestEntity));
日志输出:

Nov 18, 2015 9:18:30 AMcom.sun.jersey.api.container.filter.LoggingFilter filter
INFO: 7 * Server in-bound request
7 > PUT https://localhost/sdkapi/abcdef/0/ghijklmno
7 > host: localhost
7 > user-agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0
7 > accept: application/vnd.nsm.v2.0+json
7 > accept-language: null
7 > accept-encoding: gzip, deflate
7 > sdk-api: N0JDNzFENUIyRBDBBDJJUSJJDJJJDJJZFQkQzNjk6MQ==
7 > content-type: application/json; charset=UTF-8
7 > content-length: 1148
7 > cookie: JSESSIONID=7BC71D5B2F0357B43607BBA686EBD369
7 > connection: keep-alive
7 > 

我很好奇为什么它还没有记录实体,因为这是LoggingFilter@peeskillet是的,这就是我想弄明白的。仍然没有成功。除了实际有效载荷之外,其他一切都在记录。我不太确定您的
PostPayloadFilter
要做什么。原始的
LoggingFilter
应该已经记录了它。您的意思是,如果没有
PostPayloadFilter
,而仅仅使用
LoggingFilter
,则不会记录实体。我已经测试过了,它总是记录实体。有一个选项可以禁用实体的日志记录,但默认情况下已启用。@peeskillet检查此选项。看来汤姆卡塔有点问题。据我所知,变通方法(链接中的过滤器)实际上记录了实体本身。我不知道您是否期望通过执行上面所做的操作,日志过滤器将记录它。我不认为这是链接代码的意图。