【发布时间】:2015-05-24 05:59:57
【问题描述】:
我想在日志记录方面捕获 httpResponse 对象,以便我可以为我的控制器方法集中记录 http 返回代码。例如类似:
@Around("execution(* ..*Controller.*(..))")
public Object handleLogging(ProceedingJoinPoint pjp) throws Throwable {
// start stopwatch
long startTime = System.currentTimeMillis();
// HttpServletRequest works no problem
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
logger.info("this was the request url", request.getRequestURI());
// proceed with method
try {
retVal = pjp.proceed();
}
finally{
// stop stopwatch
long endTime = System.currentTimeMillis();
long duration = endTime-startTime;
// how do I get the response?
// this doesn't seem to work, response is null..
ServletWebRequest servletWebRequest=new ServletWebRequest(request);
HttpServletResponse response=servletWebRequest.getResponse();
logger.info(appendEntries(securityAuditParameters),
"Method={} executionSuccess={} executionTime={}", pjp.getSignature(), response.getStatus(), duration);
}
return retVal;
}
我无法弄清楚如何获取 HttpServletResponse,因此我可以输出我的返回码。我可以肯定地在控制器中处理它,但有兴趣将这一切都保留在方面。
【问题讨论】:
标签: spring servlets model-view-controller aop aspectj