java - Log4j和AOP,如何获取实际的类名

标签 java spring log4j spring-aop

我正在使用 Spring AOP 和 Log4J 将记录器实现为一个方面,但我注意到日志文件中的类名始终是 LoggerAspect 类名,所以...有吗一种在我的日志中跟踪实际类名的方法?

最佳答案

@Around("execution(* com.mycontrollerpackage.*.*(..))")
public Object aroundWebMethodE(ProceedingJoinPoint pjp) throws Throwable {      
    String packageName = pjp.getSignature().getDeclaringTypeName();
    String methodName = pjp.getSignature().getName();
    long start = System.currentTimeMillis();
    if(!pjp.getSignature().getName().equals("initBinder")) {
       logger.info("Entering method [" + packageName + "." + methodName +  "]");
    }
    Object output = pjp.proceed();
    long elapsedTime = System.currentTimeMillis() - start;
    if(!methodName.equals("initBinder")) {
       logger.info("Exiting method [" + packageName + "." + methodName + "]; exec time (ms): " + elapsedTime);
    }
    return output;
}

关于java - Log4j和AOP,如何获取实际的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505735/

相关文章:

java - 多个 odata servlet 和端点 - 可能吗?

java - 如何在 Log4J XML 配置中禁用 isInfoEnabled

Spring Security 身份验证日志记录

java - 如何使用 Graphics2D 类绘制字符串?

java - 在 Eclipse 中安装 EGIT 时出错

Java:获取类的属性以构造字符串表示

java - 获取ManyToMany映射表的id

java - 如何阻止我的 do while 循环接受除 "stop"之外的每个字符串

java - Spring Boot - 非网络应用程序的长期运行应用程序

java - 我的 log4j java.lang.ClassNotFoundException : =org. apache.log4j.RollingFileAppender 问题