通过javaagent实现参数丰富的截取方法

通过javaagent实现参数丰富的截取方法,java,scala,byte-buddy,Java,Scala,Byte Buddy,是 是否可以拦截方法调用并使用丰富的参数调用此拦截的方法? 在我的情况下,我必须截取例如logger.info(“foo”),充实消息参数,例如“foo.bar”,并调用logger.info(“foo.bar”)是的,这是可能的。使用Java代理,最简单的方法是使用Advice: class LogAdvice { static void onEnter(@Advice.Argument(value = 0, readOnly = false) String message) {

是 是否可以拦截方法调用并使用丰富的参数调用此拦截的方法?
在我的情况下,我必须截取例如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")));