Другой шаблон регистратора для конкретного класса и методов, использующих logback в классе Java
Основной код AOP
@Aspect
public class LoggingAspect {
private Logger logger ;
@Before("execution(* *(..)) && !execution(* com.*model*.*(..))")
public void logBefore(JoinPoint joinPoint) {
logger = LoggerFactory.getLogger(joinPoint.getTarget().getClass());
logger.info("{} :" + joinPoint.getSignature().getName(),"info for user log" );
//logger.info("hijacked target class : " + joinPoint.getTarget().getClass().getSimpleName() );
}
@After("execution(* *(..)) && !execution(* com.*model*.*(..)) ")
public void logAfter(JoinPoint joinPoint) {
System.out.println("logAfter() is running!");
System.out.println("hijacked : " + joinPoint.getSignature().getName());
System.out.println("******");
}
}
В настоящее время я внедряю ведение журнала aop для некоторых методов по умолчанию, таких как запуск и завершение методов. Поэтому, используя aop logger, печатаем класс и метод apo вместо печати класса и метода, принадлежащих методу. Я должен переопределить имя класса внутри AOP, чтобы напечатать имя класса этого метода, так что мне нужно получить имя метода в качестве имени собственного метода
в настоящее время я получаю
2017-09-20 18:32:06 ИНФОРМАЦИЯ [main] cmcustomer.bo.impl.CustomerBoImpl - logBefore: информация для пользовательского журнала ():addCustomer
что мне нужно
2017-09-20 18:32:06 ИНФОРМАЦИЯ [main] cmcustomer.bo.impl.CustomerBoImpl - addCustomer: информация для пользовательского журнала ():addCustomer
1 ответ
Наконец, я нашел простое решение с ProceedingJoinPoint по этой ссылке Log4j и AOP, как получить реальное имя класса