使用SpringAOP并在日志文件中获取相应的类名
我使用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”使用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
您可以使用“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);
}