通过日志不同的级别监测每一个service执行的时间。
比如当一个service的执行时间超过了3秒。或者更长的话我们就打印一个error级别的。
如果service运行的时间比较中等,例如2秒。就用warn警告日志。
如果service运行的比较一般,2秒以下。输出info级别。
所以我们是可以通过通过日志来赋值我们知道service执行的时间。
实现aop
借助spring 的aop,也就是面向界面的功能,也就是spring的核心功能。想用实现aop切面,就需要编写切入点。
创建aspect包,然后创建类ServiceLogAspect
首先加上@Component注解。
引入aop
在聚合工程里面引入
然后给我们的切面类加上注解
aop有5种类型,2和5要区分,2是在方法正常调用之后不能报异常,如果报了异常,通知是执行不了的。
如果报了异常可以在最终通知里面执行。最终通知可以理解为try catch的 finallly
在这里我们要使用的是环绕通知。它的注解是@Around
在上面声明logger
info最低级别,
这里有个红线。
直接抛出这个异常。这样环绕通知执行的方法就写好了。
既然是利用aop。就在方法上面加上注解。注解就是切面表达式。
execution执行表达式。
所有的service所在的包。
复制包的路径。
切面表达式,写好了。
测试
先install 我们的项目
注册页面,我们随便输入一个i。就会后台查询这个用户名是否存在。
这个时候,来看下我们的控制台。
执行的就是这个方法
我们在切面方法里面通过签名获得的
在创建用户的方法里面,休眠3500毫秒。需要try catch一下。
用户登陆休眠2500秒。
修改了service类,进行全局的install
重启api服务。
来实现一个真正的注册 ,密码是123123
注册因为里面代码sleep了。
级别是error 因为是3517毫秒。
测试登陆
下面测试登陆。F12 把cookie清理掉。
登陆的接口耗时。级别是warn 因为是2506毫秒。
这样就根据日志级别监控到每个service执行的时间。都可以通过日志来记录。
结束