I would suggest you stop the aspect from weaving itself with a "!within(LogAspect)" clause on your logging pointcuts.
Andy On 9 June 2010 04:35, Nils Wilhelm <[email protected]> wrote: > Hi Mohan, > > thanks for your reply! The logging of the exceptions works now. But i still > have problems logging construcor calls. Using > > before(): execution(public new(..)){ > if (catchAllLogger.isDebugEnabled()) { > catchAllLogger.debug("-> " > + > thisJoinPoint.getSignature().toString() > + createArgs(thisJoinPoint) + " at " > + thisJoinPoint.getSourceLocation()); > } > } > > > i still get the org.aspectj.lang.NoAspectBoundException (Exception while > initializing main_LogAspect). Any ideas? > > Best regards, > > Nils > > Mohan Radhakrishnan schrieb: >> >> Hi Nils, >> >> The following code advices both the constructor and the 'test' method. >> >> Class: >> >> public class Constructor { >> >> public Constructor(){ >> >> } >> >> public static void main( String[] argv ){ >> >> try{ >> new Constructor().test(); >> }catch( Exception e ){ >> >> } >> >> >> } >> >> public void test() throws Exception{ >> throw new Exception(); >> } >> } >> >> >> Aspect : >> >> public aspect ConstructorAspect { >> >> before(): execution(public Constructor.new(..)){ >> if ( Boolean.TRUE ) { >> System.out.println("-> " >> + thisJoinPoint.getSignature().toString() >> + thisJoinPoint + " at " >> + thisJoinPoint.getSourceLocation()); >> } >> } >> >> after() throwing (Exception e): execution(* Constructor.test(..)){ >> if ( Boolean.TRUE ) { >> System.out.println("-> " >> + thisJoinPoint.getSignature().toString() >> + thisJoinPoint + " at " >> + thisJoinPoint.getSourceLocation()); >> } >> } >> } >> >> Thanks, >> Mohan >> >> On Wed, Jun 9, 2010 at 3:18 PM, Nils Wilhelm <[email protected]> >> wrote: >> >>> >>> Hi, >>> >>> i hope you can help me improving my aspect so that it logs constructor >>> calls >>> and exceptions too. What i already have is: >>> >>> public aspect LogAspect { >>> >>> private static Logger communicationLogger = Logger >>> .getLogger("communicationLogger"); >>> >>> private static Logger catchAllLogger = Logger.getRootLogger(); >>> >>> static { >>> PropertyConfigurator.configure("Logger.properties"); >>> } >>> >>> before(): execution(public * communication..*(..)){ >>> if (communicationLogger.isDebugEnabled()) { >>> communicationLogger.debug("-> " >>> + >>> thisJoinPoint.getSignature().toString() >>> + createArgs(thisJoinPoint) + " at " >>> + >>> thisJoinPoint.getSourceLocation()); >>> } >>> } >>> before(): execution(public * *..*(..)){ >>> if (catchAllLogger.isDebugEnabled()) { >>> catchAllLogger.debug("-> " >>> + >>> thisJoinPoint.getSignature().toString() >>> + createArgs(thisJoinPoint) + " at " >>> + >>> thisJoinPoint.getSourceLocation()); >>> } >>> } >>> >>> after() returning(Object o): execution(public * >>> communication..*(..)){ >>> if (communicationLogger.isDebugEnabled()) >>> communicationLogger.debug("<- " >>> + >>> thisJoinPoint.getSignature().toString() + " at " >>> + thisJoinPoint.getSourceLocation() >>> + >>> " returning: " + o); >>> } >>> >>> after() returning(Object o): execution(public * *..*(..)){ >>> if (catchAllLogger.isDebugEnabled()) >>> catchAllLogger.debug("<- " >>> + >>> thisJoinPoint.getSignature().toString() + " at " >>> + thisJoinPoint.getSourceLocation() >>> + >>> " returning: " + o); >>> } >>> >>> private String createArgs(JoinPoint jp) { >>> StringBuffer args = new StringBuffer(); >>> args.append("("); >>> for (int i = 0; i < jp.getArgs().length; i++) { >>> if (i > 0) >>> args.append(","); >>> args.append(jp.getArgs()[i].toString()); >>> } >>> args.append(")"); >>> >>> return args.toString(); >>> } >>> >>> } >>> >>> This logs my method calls and works fine. Now i want to log constuctor >>> calls >>> and exceptions too. If i use >>> >>> after() throwing (Exception e): execution(public * *..*(..)){ >>> if (catchAllLogger.isDebugEnabled()) { >>> catchAllLogger.debug("Error " >>> + >>> thisJoinPoint.getSignature().toString() >>> + createArgs(thisJoinPoint) + " at " >>> + >>> thisJoinPoint.getSourceLocation()); >>> } >>> } >>> >>> for logging exceptions it is never applied. And if i use >>> >>> before(): execution(public new(..)){ >>> if (catchAllLogger.isDebugEnabled()) { >>> catchAllLogger.debug("-> " >>> + >>> thisJoinPoint.getSignature().toString() >>> + createArgs(thisJoinPoint) + " at " >>> + >>> thisJoinPoint.getSourceLocation()); >>> } >>> } >>> for logging constructor calls i get an NoAspectBoundException. >>> >>> Could you help me with that? >>> >>> Best regards >>> >>> Murphy >>> _______________________________________________ >>> aspectj-users mailing list >>> [email protected] >>> https://dev.eclipse.org/mailman/listinfo/aspectj-users >>> >>> >> >> _______________________________________________ >> aspectj-users mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
