I am trying to use AspectJ for tracing and I have hit the wall trying to figure out this problem. I have a prototype where my code works but it does not work with the "real" project. What I am trying to do is to prefix log statements with some additional information(class, line number etc). Here is the code: pointcut logCall() : call(* org.apache.log4j.Logger.*(..)) && !within(*..*Aspect);
before() : logCall() { MDC.put(MDC_KEY, " (" + thisEnclosingJoinPointStaticPart.getSourceLocation() + ") " + thisEnclosingJoinPointStaticPart.getSignature().toShortString()); } after() : logCall() { MDC.remove(MDC_KEY); } In the prototype this works fine giving the following output(for example): 2011-05-27 14:44:04,474 [main] WARN - (CommChannel.java:18) CommChannel.doComm(..) Delivering message by channel where "Delivering message by channel" is the original logged message and "(CommChannel.java:18) CommChannel.doComm(..)" was prefixed by the aspect code shown above. However when I move this to my "real" project this does nothing. Compiler output seems to indicate that it is finding the right join points. For example: [INFO] Join point 'method-call(org.apache.log4j.Logger org.apache.log4j.Logger.getLogger(java.lang.Class))' in Type 'com.mycompany.myapp.plugins.MyClass' (MyClass.java:55) advised by after advice from ''com.mycompany.myapp.aspects.tracing.MyAspect' (myaspects-2.0-SNAPSHOT.jar!MyAspect.class:65(from MyAspect.aj)) [with runtime test] However the original log statement is logged without my aspect prefix. Attaching a debugger to the process shows that it never enters the before or after advice. This means if I remove the MDC code and simply enter log statements into the before & after advice they are still never hit(i.e. the issue is NOT with MDC). I am running: Ubuntu 10.4 (Kernel Linux 2.6.32-31-generic) Tomcat 6.0.32 Maven 2.2.1 with AspectJ dependencies <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.10</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.10</version> </dependency> <plugin> ... <artifactId>aspectj-maven-plugin</artifactId> <version>1.3.1</version> ... etc PLEASE NOTE: I am able to get tracing to work in the "real" app. It just doesn't work with the above log4j pointcut. Sorry about the very long post but I am really out of ideas, so any pointers for further investigation will the great. _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users