logging - 从 joinPoint 获取行号

标签 logging wrapper aspectj spring-aop

我正在尝试从我的周围建议中的连接点 Sourcelocation 访问行号(用于记录目的)。 但它正在给予

Exception in thread "main" java.lang.UnsupportedOperationException
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint$SourceLocationImpl.getLine(MethodInvocationProceedingJoinPoint.java:282)

调试时 loc.getLine() 为 null。

@Around("execution (* com.logger.rms.*.*(..))")
public void logAround(ProceedingJoinPoint procJoinpoint) throws Throwable {
  StaticPart part = (procJoinpoint.getStaticPart());
  org.aspectj.lang.reflect.SourceLocation loc = part.getSourceLocation();
  int line = loc.getLine();
  System.out.println(line);

  try {
    procJoinpoint.proceed();
  } catch (Throwable e) {
    System.out.println("checking " + procJoinpoint.getSourceLocation().getWithinType().getCanonicalName());
    String str = "Aspect ConcreteTester :" + procJoinpoint.getStaticPart().getSourceLocation().getLine();
    throw new BusinessLogicException("Throwing Custom business exception from around");
  } finally {
  }
}

最佳答案

它从来没有工作过,请参阅来源 code here

private class SourceLocationImpl implements SourceLocation {

    ...

    @Override
    public String getFileName() {
        throw new UnsupportedOperationException();
    }

    @Override
    public int getLine() {
        throw new UnsupportedOperationException();
    }
}

关于logging - 从 joinPoint 获取行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17727975/

相关文章:

css - 包装 float :center isn't working

binding - 包装器、绑定(bind)和端口之间有什么区别?

magento - 如何在 Magento 数据库中启用 exception.log 和 system.log?

logging - Gradle 插件库日志记录

多态 native 类的 c++/cli 包装器

java - Aspectj 覆盖方法的参数

java - AspectJ @Before 注释问题

java - 开始使用aspectj而不使用Spring AOP

logging - 如何以编程方式禁用Jetty 9日志记录?

java - 通过 JVM 参数进行 log4j 配置?