使用SpringAOP并在日志文件中获取相应的类名

使用SpringAOP并在日志文件中获取相应的类名,spring,log4j,spring-aop,Spring,Log4j,Spring Aop,我使用SpringAOP进行日志记录。一切正常,但在日志中,我只得到方面类的名称。我想打印相应的类名称。下面是代码片段。以下代码中需要做哪些更改才能满足我的要求 私有静态最终记录器Logger=Logger.getLogger(LogginAspect.class) @之后(“执行(*com.app.c2pc…(..)”) 公共无效日志(连接点连接点){ 这是我在日志文件中得到的o/p:- 2016-07-20 23:41:20 | |信息日志方面:23-执行后方法:checkSubmitEva

我使用SpringAOP进行日志记录。一切正常,但在日志中,我只得到方面类的名称。我想打印相应的类名称。下面是代码片段。以下代码中需要做哪些更改才能满足我的要求

私有静态最终记录器Logger=Logger.getLogger(LogginAspect.class)

@之后(“执行(*com.app.c2pc…(..)”) 公共无效日志(连接点连接点){

这是我在日志文件中得到的o/p:-

2016-07-20 23:41:20 | |信息日志方面:23-执行后方法:checkSubmitEvalFlag 2016-07-20 23:41:20 | |信息日志方面:24-*************************************************************************** 2016-07-20 23:41:20 | |信息日志方面:70-方法:checkSubmitEvalFlag返回值为:0 2016-07-20 23:41:20 | |信息日志方面:40-进入类com.app.c2pc.scie.daoImpl.PbdDAOImpl$$EnhancerBySpringCGLIB$$688f6ece,方法名为getBackUpUserDetails 2016-07-20 23:41:20 | |信息日志方面:45-1:参数名称:com.app.c2pc.scie.bean。SearchCriteriaBean@77ef5b02

您可以使用“joinPoint.getTarget().getClass().getName()”来获得完全限定的类名,如“com.abc.pqr.MyClass


您可以使用“joinPoint.getTarget().getClass().getSimpleName()”只获取类名称,如“MyClass

我希望在此级别更改代码,以便日志文件中的类名对于每个请求都是不同的。私有静态最终记录器=Logger.getLogger(LogginAspect.class);您可以使用,**私有静态最终记录器Logger=Logger.getLogger(joinPoint.getTarget().getClass());**这不是一个推荐的答案,它使用了您不应该使用的反射,因为它会使应用程序变慢
    logger.info("After executing method : " + joinPoint.getSignature().getName());
    logger.info("***************************************************************************");
}

@Before("execution(* com.app.c2pc..*.*(..))")
public void logBefore(JoinPoint joinPoint) {

    logger.info("***************************************************************************");
    logger.info("Before executing method : " + joinPoint.getSignature().getName());
}

@Around("execution(* com.app.c2pc..*.*(..)) && !execution(* com.app.c2pc.login.LoginController.*(..)) ")
public Object logAround(ProceedingJoinPoint pjp) throws Throwable {

    long start = System.currentTimeMillis();
    Object clazz = pjp.getTarget().getClass().getName();
    String methodName = pjp.getSignature().getName();
    logger.info("Entering Class " + clazz + " With Method Name " + methodName);
    Object[] obj = pjp.getArgs();
    int i = 0;
    try {
        for (Object o : obj) {
            logger.info(++i + " : Parameter Name :" + (null != o ? o.toString() : ""));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    Object output = pjp.proceed(pjp.getArgs());

    logger.info("Excecution Completed for method : " + methodName + " in Class : " + clazz + " with result "
            + output);
    long elapsedTime = System.currentTimeMillis() - start;
    logger.info("Execution time for method : " + methodName + " in Class : " + clazz + " : " + elapsedTime
            + " milliseconds.");
    return output;
}

@AfterThrowing(pointcut = "execution(* com.app.c2pc..*.*(..))", throwing = "error")
public void logAfterThrowing(JoinPoint joinPoint, Throwable error) {

    logger.info("Exception thrown by method : " + joinPoint.getSignature().getName());
    logger.info("Exception name : " + error);
}

@AfterReturning(pointcut = "execution(* com.app.c2pc..*.*(..))", returning = "result")
public void logAfterReturning(JoinPoint joinPoint, Object result) {

    logger.info("Method : " + joinPoint.getSignature().getName() + " returned value is : " + result);
}