Из документации для аннотации @Slf4j
@Slf4j
public class LogExample {}
сгенерирует:
public class LogExample {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
}
, что означает, что при использовании ссылки log
он всегда будет для LoggingAspect
в общем коде.
Обходной путь может быть следующим:
import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.getLogger;
// ...
@Around("controllerInvocation()")
public Object logEntering(ProceedingJoinPoint joinPoint) throws Throwable {
// Get the logger for the class of intercepted method
Logger logz = getLogger(joinPoint.getTarget().getClass());
logz.info("Entering method");
Object res = joinPoint.proceed();
logz.info("Exiting method");
return res;
}
Надеюсь, это поможет
Редактировать: OP требуемый @ kriegaex для примера его предложения. Я позволю себе проиллюстрировать его предложения.
Пожалуйста, обратитесь к примеру раздел в документации для получения более подробной информации
import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.getLogger;
// ...
@Around("controllerInvocation() && target(myTarget)")
public Object logEntering(ProceedingJoinPoint joinPoint,Object myTarget) throws Throwable {
// Get the logger for the class of intercepted method
Logger logz = getLogger(myTarget.getClass());
logz.info("Entering method");
try{
Object res = joinPoint.proceed();
}finally{
logz.info("Exiting method");
}
return res;
}