微服务AOP切面实现全局日志入库记录(feign接口调用保存)
场景:使用AOP切面,对微服务工程进行入库记录(fegin接口调用)
参考:
若依微服务版本gitee
若依微服务部署参考
@EnableFeignClients注解的属性字段basePacka详解
若依微服务官方参考文档
微服务aop工程日志参考
一、若依的使用,使用postman获取token
使用postman访问一下地址
http://ip:端口/auth/login
参数为
{
“username”:“,
“password”:”“,
“code”:”“,
“uuid”:”"
}
获取到token后
访问swagger,进行接口的测试访问
二、AOP实现微服务工程日志(代码参考于若依的微服务版本)
1、注意事项
1.1在Application启动类上的@EnableFeignClients指定要扫描的包
示例为
@EnableFeignClients(basePackages = {"service.Impl","activity.feign"})
@SpringBootApplication
public class ActivityApplication {
public static void main(String[] args) {
SpringApplication.run(ActivityApplication.class, args);
}
}
若不指定会出现调用的feign接口实现类无法注入
1.2 异步调用feign接口会导致请求头的丢失,解决方案
/**
* 保存系统日志记录
*/
public void saveSysLog(SysOperLog sysOperLog) {
//TODO :获取当前线程请求头信息(解决Feign异步调用丢失请求头问题)
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
ThreadUtil.execAsync(new Runnable() {
@Override
public void run() {
//每一个线程都来共享之前的请求数据
RequestContextHolder.setRequestAttributes(requestAttributes);
remoteLogService.saveLog(sysOperLog);
}
});
}
2.完整代码实现(请结合若依微服务版本的代码)
若依微服务版本gitee
1.
2