Tano
Tano

Reputation: 1377

Java Spring AOP Logger

I have the follwoing aspect:

@Component
@Aspect
public class LoggingAspect {

    Logger logger = Logger.getLogger(LoggingAspect.class);

    @AfterReturning(pointcut = "execution(* com.example..*.*(..))", returning = "retVal")
    public void logAfterMethod(JoinPoint joinPoint, Object retVal) {
        StringBuffer logMessage = new StringBuffer();
        logMessage.append(joinPoint.getTarget().getClass().getName());
        logMessage.append(".");
        logMessage.append(joinPoint.getSignature().getName());
        logMessage.append("(");
        // append args
        Object[] args = joinPoint.getArgs();
        for (int i = 0; i < args.length; i++) {
            logMessage.append(args[i]).append(",");
        }
        if (args.length > 0) {
            logMessage.deleteCharAt(logMessage.length() - 1);
        }

        logMessage.append(")");
        if (retVal != null) {
            logMessage.append(" with return value " + retVal + " of type "
                    + retVal.getClass());
        } else {
            logMessage.append(" with return value null");
        }
        logger.info(logMessage);
    }

}

and then the following bean:

@Bean
    public LoggingAspect logger(){
        return new LoggingAspect();
    }

but whenever I want to run my application it gives me the errors, I have google it but could not find any related problem to this one, maybe I am missing something ://

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedServletContainerCustomizerBeanPostProcessor': BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException

Upvotes: 1

Views: 93

Answers (1)

Jens
Jens

Reputation: 69495

The main reason is: nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld.

This means you have to add the aspectjweaver.jar to your classpath.

If you use maven, add the dependency to your pom.xml:

<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.9</version>
</dependency>

Upvotes: 2

Related Questions