Como obtenho Jersey 2.2 (JAX-RS) para gerar saída de log, incluindo corpos de solicitação Json
Estou executando um Jersey 2.2 Servlet no Jetty 9.0.4 para servir solicitações REST.
Principalmente tudo é bom e pedidos são servidos, mas eu nunca viQUALQUER log das aulas de Jersey. E eu não consigo encontrar nenhum documento que indique que galinhas eu preciso sacrificar para que isso aconteça com Jersey 2.2
Então, minha primeira pergunta é: o que eu preciso fazer para que Jersey gere algum log.
Quando uma solicitação é executada incorretamente (por exemplo, porque o corpo da solicitação Json não pode ser analisado) Jersey lançará uma ContainerException com uma mensagem como "Não é possível desserializar a instância de java.util.ArrayList fora do token START_OBJECT" etc. estarrealmente Adorável ter registrado o corpo da solicitação de entrada para que eu possa inspecionar o Json. Mais uma vez, não consigo encontrar nada no documento atual descrevendo tal animal, embora tenha certeza de que existe um. E em qualquer caso até que eu resolva a questão 1 acima, é discutível.
Então, minha segunda pergunta é como faço para registrar o corpo da solicitação de entrada (sem interromper a solicitação).
A configuração Jersey Servlet no web.xml se parece com:
<servlet >
<servlet-name>Jersey Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>au.com.xandar.wirelesstiming.recorder.web.rest.JerseyApplication</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Meu JerseyApplication é:
public final class JerseyApplication extends ResourceConfig {
public JerseyApplication() {
super(
//JacksonFeature.class // Switching on Jackson
// (My) JerseyLoggingFilter.class // Log requests using Jersey ContainerRequestFilter
MyApplicationEventListener.class // Log Requests using Jersey RequestEventListener
);
packages("au.com.xandar.wirelesstiming.recorder");
// Enable LoggingFilter & output entity.
// NB This does NOT generate any log.
registerInstances(new LoggingFilter(Logger.getLogger(JerseyApplication.class.getName()), true));
}
}