Как реализовать другой шаблон регистратора для определенного класса и методов, используя logback в классе java?

базовый код АОП

@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 для некоторых методов по умолчанию, таких как начало и конец методов .so, используя регистратор aop, печатающий класс и метод apo вместо того, чтобы печатать класс и метод, принадлежащий методу. Мне нужно переопределить имя класса внутри aop, чтобы напечатать имя класса этого метода, поэтому мне нужно получить имя метода как собственное имя метода.

в настоящее время я получаю

2017-09-20 18:32:06 ИНФОРМАЦИЯ [основная] cm.customer.bo.impl.CustomerBoImpl - logBefore : информация для пользовательского журнала() :addCustomer

что мне нужно

2017-09-20 18:32:06 ИНФОРМАЦИЯ [основная] cm.customer.bo.impl.CustomerBoImpl - addCustomer: информация для пользовательского журнала(): addCustomer


person Ashok Kumar N    schedule 20.09.2017    source источник


Ответы (1)


наконец, я нашел простое решение с ProceedingJoinPoint по этой ссылке Log4j и АОП, как получить фактическое имя класса

person Ashok Kumar N    schedule 25.09.2017
comment
я нашел ответ для класса, но не для метода - person Ashok Kumar N; 19.10.2017
comment
вам нужно будет определить отдельный приложение, а затем получить доступ через имя/категорию регистратора. Получите разные регистраторы, указав разные имена при вызове Logger.getLogger. - person Acewin; 19.10.2017
comment
@Acewin, с помощью приведенного выше ответа я могу получить имя динамического класса в регистраторе. есть ли другой способ переопределить имя метода в регистраторе, например, что делает MDC. или мы можем переопределить %M через MDC - person Ashok Kumar N; 19.10.2017
comment
Я не совсем понимаю, что вы имеете ввиду. Возможно, вам придется уточнить свой вопрос. Если вам нужно, чтобы шаблон отображения журнала отличался, вы можете изменить его в файле log4j.xml. Шаблон вашего журнала будет выглядеть примерно так: %d{гггг-ММ-дд ЧЧ:мм:сс} %-5level %logger{36} - %msg%n.. Измените это так, как вы хотите, чтобы журнал отображался. - person Acewin; 19.10.2017
comment
@Acewin Я использую журнал [stackoverflow.com/questions/46834273/ здесь я получаю имя класса как фактическое вместо класса aop, например, мне нужно получить фактическое имя метода вместо имени метода aop в регистраторе или есть ли какой-либо способ переопределить %M - person Ashok Kumar N; 20.10.2017