spring aop中获取调用者信息

纵马饮白虹 2019-11-04 09:55:02
最近做aop日志 希望能记录下监听的方法的调用者 举例 在方法A上加aop日志,方法B运行时调用了方法A,在日志记录时需要能够获取到方法A的调用者是方法B记录下来 有没有什么好的方法?!
...全文
910 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

怎么样楼主,解决没

纵马饮白虹 2020-10-18
  • 打赏
  • 举报
回复
引用 11 楼 Mr.Q_c的回复:
我也遇到了,楼主怎么解决的?经过框架位置确定不了了
这段时间只有一个想法,没有尝试呢。异常打印堆栈时,不是有行数还有代码吗?经常有一个方法名作为链接,可以点击跳到源码那里,那么如果使用这个逻辑,遍历对比这个方法名,就可以判断出来这就是真正逻辑上的调用者了
fenda、 2020-10-13
  • 打赏
  • 举报
回复
我也遇到了,楼主怎么解决的?经过框架位置确定不了了
weixin_40599844 2019-11-22
  • 打赏
  • 举报
回复
不详细说,只给你看一个方法
Thread.currentThread().getStackTrace()
纵马饮白虹 2019-11-21
  • 打赏
  • 举报
回复
引用 8 楼 liu137756的回复:
这个简单aop切面,注入@Aspect 想怎么监听就怎么监听
额 感觉答非所问 能不能详细说下?
liu137756 2019-11-21
  • 打赏
  • 举报
回复
这个简单aop切面,注入@Aspect 想怎么监听就怎么监听
纵马饮白虹 2019-11-14
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984的回复:
[quote=引用 3 楼 纵马饮白虹 的回复:] [quote=引用 1 楼 maradona1984的回复:]不详细说,只给你看一个方法 Thread.currentThread().getStackTrace()
所以 我问的难题在于怎么拿到我想要的那个 我认为是真正调用者的类和方法[/quote] 从程序的角度来看,这个获取的就是真正的调用者,你认为的只是代码中写的调用者只是不太清楚你需要做什么,需要过滤掉哪些代理类[/quote] 是的 我就是要准确获取逻辑上的调用者 过滤掉那些我不关注的调用者 功能举例 方法A有多个调用者 我希望记录什么时间 哪个方法调用了方法A 这个只靠堆栈感觉是没办法分辨 想知道在spring框架中有没有提供这样的能力 或者有什么好的逻辑可以拿到我关注的逻辑上的调用者 而忽略掉实际执行中的干扰项
maradona1984 2019-11-14
  • 打赏
  • 举报
回复
引用 6 楼 纵马饮白虹 的回复:
[quote=引用 5 楼 maradona1984的回复:][quote=引用 3 楼 纵马饮白虹 的回复:] [quote=引用 1 楼 maradona1984的回复:]不详细说,只给你看一个方法 Thread.currentThread().getStackTrace()
所以 我问的难题在于怎么拿到我想要的那个 我认为是真正调用者的类和方法[/quote] 从程序的角度来看,这个获取的就是真正的调用者,你认为的只是代码中写的调用者只是不太清楚你需要做什么,需要过滤掉哪些代理类[/quote] 是的 我就是要准确获取逻辑上的调用者 过滤掉那些我不关注的调用者 功能举例 方法A有多个调用者 我希望记录什么时间 哪个方法调用了方法A 这个只靠堆栈感觉是没办法分辨 想知道在spring框架中有没有提供这样的能力 或者有什么好的逻辑可以拿到我关注的逻辑上的调用者 而忽略掉实际执行中的干扰项[/quote] 代理对象的类型名后面都有$XXX这种,可以按照这种规则忽略
maradona1984 2019-11-13
  • 打赏
  • 举报
回复
引用 3 楼 纵马饮白虹 的回复:
[quote=引用 1 楼 maradona1984的回复:]不详细说,只给你看一个方法 Thread.currentThread().getStackTrace()
所以 我问的难题在于怎么拿到我想要的那个 我认为是真正调用者的类和方法[/quote] 从程序的角度来看,这个获取的就是真正的调用者,你认为的只是代码中写的调用者只是不太清楚你需要做什么,需要过滤掉哪些代理类
纵马饮白虹 2019-11-12
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984的回复:
不详细说,只给你看一个方法 Thread.currentThread().getStackTrace()
所以 我问的难题在于怎么拿到我想要的那个 我认为是真正调用者的类和方法
纵马饮白虹 2019-11-12
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984的回复:
不详细说,只给你看一个方法 Thread.currentThread().getStackTrace()
这个是可以拿到调用堆栈 但是 问题在于怎么拿到调用者 用框架后 调用关系就很复杂了 我要获取的调用者在这个数组的中间 具体位置不定 没办法确定方法B的下标
maradona1984 2019-11-04
  • 打赏
  • 举报
回复
不详细说,只给你看一个方法 Thread.currentThread().getStackTrace()

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧