前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >aop记录登录日志

aop记录登录日志

作者头像
时光潜流
发布2023-10-22 16:23:08
2700
发布2023-10-22 16:23:08
举报
文章被收录于专栏:博客专栏博客专栏

在网站或者各种软件系统中,多多少少会有一些日志需要我们来记录,从而查看当前系统的运行状态。

对于springboot框架而言,可以采用aop面向切面编程的方式,在不改变原本业务的基础上来增加这个日志记录功能。以下为一个记录登录数据日志的aop代码,通过该代码,可以将用户登录ip、登录方法、登录信息、登录时间计入mysql数据库。@Pointcut设定了切入点,可以对目标方法进行而外扩展,通过@Before注解,实现在执行指定函数之前运行一些代码。JointPoint连接点记录了本次代理的函数的所有信息,包含函数本身元数据与形参值。

代码语言:javascript
复制
@Aspect
@Component
public class LoginAspect {

    @Autowired
    private LogService logService;

    @Pointcut("execution(* top.dreamcenter.dreamcenter.controller.AdminController.check(..))")
    public void pointFn(){}

    @Before("pointFn()")
    public void loginLog(JoinPoint joinPoint) {

        MyLog myLog = new MyLog();

        Object[] args = joinPoint.getArgs();
        List<Object> list = Arrays.asList(args);

        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        if (requestAttributes != null){
            HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();

            myLog.setType(LogType.LOGIN.toString());
            myLog.setAddr(request.getRemoteAddr());
            myLog.setRaw(list.toString());

            logService.insert(myLog);
        }
    }
}

如果想要获取用户的ip等信息,需要借助 RequestContextHolder.getRequestAttributes() 方法来获取本次连接请求的上下文。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com