是 是否可以拦截方法调用并使用丰富的参数调用此拦截的方法? 我的情况是我必须拦截例如logger.info("foo"),丰富消息参数,例如“foo.bar”并调用 logger.info(“foo.bar”)
最佳答案
是的,这是可能的。使用 Java 代理,最简单的方法是使用 Advice
:
class LogAdvice {
static void onEnter(@Advice.Argument(value = 0, readOnly = false) String message) {
message = message + ".bar";
}
}
您现在可以使用 AgentBuilder
在转换器中注册此建议:
dynamicType.visit(Advice.to(LogAdvice.class).on(named("info")));
关于java - 通过 javaagent 拦截具有丰富参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526979/