Другой шаблон регистратора для конкретного класса и методов, использующих 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, как получить реальное имя класса

Другие вопросы по тегам