【发布时间】:2014-03-05 08:03:00
【问题描述】:
我有一个关于spring mvc和jackson mapper的问题:每次我调用一个rest服务传递一个错误的json(空的,错误的参数,......)客户端正确地收到一个错误,但没有办法看到详细说明服务器端的调用。 有没有办法以正确的方式登录这些信息?
提前感谢您的帮助。
法比奥
【问题讨论】:
标签: spring-mvc jackson
我有一个关于spring mvc和jackson mapper的问题:每次我调用一个rest服务传递一个错误的json(空的,错误的参数,......)客户端正确地收到一个错误,但没有办法看到详细说明服务器端的调用。 有没有办法以正确的方式登录这些信息?
提前感谢您的帮助。
法比奥
【问题讨论】:
标签: spring-mvc jackson
开始研究编组过程的好地方是AbstractMessageConverterMethodProcessor.writeWithMessageConverters - 它可以让您很好地了解正在执行的内容。
至于日志方面,整个编组/解组过程的第一个catch是ServletInvocableHandlerMethod.invokeAndHandle:
catch (Exception ex) {
if (logger.isTraceEnabled()) {
logger.trace(getReturnValueHandlingErrorMessage("Error handling return value", returnValue), ex);
}
throw ex;
}
因此-在此处的日志记录配置中启用TRACE-org.springframework.web.servlet.mvc.method.annotation 将为您提供所需的信息。
此外,捕捉这种日志输出的另一个好地方 - 这次使用 DEBUG 而不是 TRACE 是:DispatcherServlet.processHandlerException。
希望这会有所帮助。
【讨论】:
if (logger.isTraceEnabled()) {logger.trace("Using resolved error view: " + exMv, ex);} if (logger.isDebugEnabled()) { logger.debug("Using resolved error view: " + exMv); },那么哪个更好?