aopを使用して統合ログ処理を行う
10416 ワード
コントロールレイヤはaopをして、このようにコードの冗長性を減らして、統一的にログを処理します
グローバル例外処理
@Aspect
@Component
public class WebLogAspect {
private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
@Pointcut("execution(public * com.itat.controller.*.*(..))")
public void webLog() {
}
/**
* AOP
* @param joinPoint
* @throws Throwable
*/
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// , nosql
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//
logger.info("URL : " + request.getRequestURL().toString());
logger.info("HTTP_METHOD : " + request.getMethod());
logger.info("IP : " + request.getRemoteAddr());
Enumeration<String> enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
logger.info("name:{},value:{}", name, request.getParameter(name));
}
// : ? 20 ,
}
/**
* @param ret
* @throws Throwable
*/
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {
// ,
logger.info("RESPONSE : " + ret);
}
}
グローバル例外処理
/**
*
* 1. json
* 2.
*/
@ControllerAdvice(basePackages = "com.itat.controller")
public class GlobalExceptionHandler {
// @ResponseBody json
// modeAndView
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String, Object> errorResult() {
// , 。
Map<String, Object> errorResultMap = new HashMap<String, Object>();
errorResultMap.put("errorCode", "500");
errorResultMap.put("errorMsg", " !");
return errorResultMap;
}