使用AOP切面打印系统日志

血红的双手。 提交于 2020-03-10 22:19:01

拦截接口的调用 打印日志

@Aspect
@Component
@Slf4j
public class MethodLogAspect {

	@Around(value = "execution(* com.xxx.controller.*.*(..))")
	public Object around(ProceedingJoinPoint point) {
		StopWatch clock = new StopWatch();
		clock.start();

		String methodPrefix = point.getSignature().toString();

		log.info(methodPrefix + ", 参数值:" + Arrays.toString(point.getArgs()));
		Object returnValue;
		try {
			returnValue = point.proceed();
		} catch (Throwable throwable) {
			log.error(methodPrefix + " invoke controller error ", throwable);
			returnValue = Result.failed("系统错误");
		}
		clock.stop();

		log.info(methodPrefix + ", 返回值:" + returnValue + ", 用时:" + clock.getTotalTimeMillis() + " ms");
		return returnValue;
	}
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!