Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Logging constructor calls and exceptions

Hi Andy,

thanks. That was my mistake. Now all works fine.

Best regards,

Nils

Andy Clement schrieb:
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 <murphy@xxxxxxxxxxxxxxxx> 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 <murphy@xxxxxxxxxxxxxxxx>
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
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



Back to the top