我正在尝试使用AOP编程创建跟踪记录器,类似于this.问题是即使在获得这样的新记录器之后:
final Logger logger = LoggerFactory.getLogger(joinPoint.getTarget().getClass().getName());
所有日志仍然如下:
TRACE 2015-11-05 14:35:43,588 LoggingAspect.logMethod(LoggingAspect.java:42) - Some log
而不是:
TRACE 2015-11-05 14:35:43,588 MyClass.SomeMethod(MyClass.java:10) - Some log
要记录的类不会更改。有什么建议吗?
答案 0 :(得分:0)
null
返回执行方法的目标对象。如果您的对象是在静态上下文中执行的话,那么可能为null
。但它可能是joinPoint.getSignature()
。所以不要使用它。正如你所看到的,它表现得有些奇怪(我认为它与代理或子类化有关)。
你最好使用
joinPoint.getSignature().getDeclaringType()
检索包含定义类的方法的签名。所以最好使用
position: static;
检索记录器的类。