我试图检测org.slf4j.Logger以便拦截日志调用并通过Java代理存储它们。我的代码如下:
CASE
LogAdvice具有以下方法:
new AgentBuilder.Default()
.with(new AgentBuilder.InitializationStrategy.SelfInjection.Eager())
.type(hasSuperType(nameContains("Logger")))
.transform(new AgentBuilder.Transformer.ForAdvice()
.include(Agent.class.getClassLoader())
.advice(named("info"), LogAdvice.class.getName()))
.installOn(inst);
但是永远不会输入此方法。 我的方法可以与我尝试过的其他类(例如java.util.Map的put()方法)配合使用。为什么在这种情况下无法使用仪器?
答案 0 :(得分:0)
注册一个AgentBuilder.Listener以查看要检测的类。我怀疑您正在寻找的课程是在注册代理之前加载的。
在这种情况下,您可以注册重新转换策略以重新转换这些类。
顺便说一句:在这里,我看不到急切的初始化有多么有用。我看不到为此需要任何已检测类的初始化。