package com.example; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringWriter; import javax.ws.rs.WebApplicationException; import javax.ws.rs.ext.Provider; import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.ByteArrayOutputStream; import org.jboss.resteasy.annotations.interception.ServerInterceptor; import org.jboss.resteasy.spi.interception.MessageBodyReaderContext; import org.jboss.resteasy.spi.interception.MessageBodyReaderInterceptor; import org.jboss.resteasy.spi.interception.MessageBodyWriterContext; import org.jboss.resteasy.spi.interception.MessageBodyWriterInterceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Provider @ServerInterceptor public class LoggingInterceptor implements MessageBodyReaderInterceptor, MessageBodyWriterInterceptor { private static final Logger log = LoggerFactory.getLogger(LoggingInterceptor.class); public Object read(MessageBodyReaderContext context) throws IOException, WebApplicationException { log.info("********* LoggingInterceptor.read() *********"); InputStream is = context.getInputStream(); StringWriter writer = new StringWriter(); IOUtils.copy(is, writer); context.setInputStream(IOUtils.toInputStream(writer.toString())); log.info(writer.toString()); return context.proceed(); } public void write(MessageBodyWriterContext context) throws IOException, WebApplicationException { log.info("********* LoggingInterceptor.write() *********"); OutputStream old = context.getOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); context.setOutputStream(baos); context.proceed(); log.info(baos.toString()); baos.writeTo(old); context.setOutputStream(old); } }