在 AOP 记录器中定义 class 名称
Define class name in AOP Logger
你能告诉我是否可以通过在控制台包中定义的 Spring Boot AOP Logger 和实际代理的 class 名称吗?
为了更好地理解这里是我的控制台的屏幕截图:
如您所见,我的记录器有包和 class 名称,但我的目标是 c.s.b.c.MyAspectOrientedLogger
例如这个 c.s.b.s.UserService
还有我的记录器:
@Aspect
@Component
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class MyAspectOrientedLogger {
private Logger lgr = LoggerFactory.getLogger(this.getClass());
@Around("...")
public Object logFunctions(ProceedingJoinPoint joinPoint) throws Throwable {
Object proceed = joinPoint.proceed();
LOGGER.debug("My some logging output ...");
return proceed;
}
我知道我可以使用 joinPoint.getTarget().getClass()
并打印该名称,但我想要它而不是记录器 class。可能吗?谢谢
是的,这是可能的。 joinPoint 参数提供了一个名为 getSignature
的方法,它再次提供了方法 getDeclaringType
,其中 returns 方法 class 的 class 对象,其中纵横交错。
你可以这样使用它:
Class type = joinPoint.getSignature().getDeclaringType();
Logger lgr = LoggerFactory.getLogger(type);
Object proceed = joinPoint.proceed();
lgr.error("My some logging output ...");
然而,这样做的结果是,您无法静态获取记录器,您必须从方面本身的工厂中获取实例。我不确定这样的解决方案的性能缺陷,如果您编写重负载应用程序,则必须对其进行测试。
你能告诉我是否可以通过在控制台包中定义的 Spring Boot AOP Logger 和实际代理的 class 名称吗?
为了更好地理解这里是我的控制台的屏幕截图:
如您所见,我的记录器有包和 class 名称,但我的目标是 c.s.b.c.MyAspectOrientedLogger
例如这个 c.s.b.s.UserService
还有我的记录器:
@Aspect
@Component
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class MyAspectOrientedLogger {
private Logger lgr = LoggerFactory.getLogger(this.getClass());
@Around("...")
public Object logFunctions(ProceedingJoinPoint joinPoint) throws Throwable {
Object proceed = joinPoint.proceed();
LOGGER.debug("My some logging output ...");
return proceed;
}
我知道我可以使用 joinPoint.getTarget().getClass()
并打印该名称,但我想要它而不是记录器 class。可能吗?谢谢
是的,这是可能的。 joinPoint 参数提供了一个名为 getSignature
的方法,它再次提供了方法 getDeclaringType
,其中 returns 方法 class 的 class 对象,其中纵横交错。
你可以这样使用它:
Class type = joinPoint.getSignature().getDeclaringType();
Logger lgr = LoggerFactory.getLogger(type);
Object proceed = joinPoint.proceed();
lgr.error("My some logging output ...");
然而,这样做的结果是,您无法静态获取记录器,您必须从方面本身的工厂中获取实例。我不确定这样的解决方案的性能缺陷,如果您编写重负载应用程序,则必须对其进行测试。