Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Question on Tracing Aspect




Manjula,

You have 3 choices:
1. Using a logging framework like java.util.logging in the example which
has separate configuration. Each time you start you program you can chose
which classes get logged. The aspect implementation is efficient enough
that having the logging woven but disabled will only have a minor impact on
application performance.
2. Use an aspect enabling/disabling technique described by Adrian Colyer in
his blog:
http://www.aspectprogrammer.org/blogs/adrian/2005/03/perinstance_asp.html,
http://aspectprogrammer.org/modules/sections/index.php?op=printpage&artid=2
3. Use the load-time weaving feature that will be in the final version of
AspectJ 5: http://www.eclipse.org/aspectj/doc/ajdk15notebook/index.html

Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/

Manjula Jayaraman <manjuv123@xxxxxxxxx>@eclipse.org on 04/05/2005 23:56:01

Please respond to aspectj-users@xxxxxxxxxxx

Sent by:    aspectj-users-bounces@xxxxxxxxxxx


To:    aspectj-users@xxxxxxxxxxx
cc:
Subject:    Re: [aspectj-users] Question on Tracing Aspect


Thanks Matthew. I used staticinitialization and it
worked for me.

Another question is that is there a dynamic waying of
turning off aspects J in the production. For example,
i've an aspect EspressoTraceAspect for tracing. If i
want to disable it, i've to change the pointcut and
recompile and redeploy that in the production. Is
there another way without going through this
compilation?

Thanks in advance,
Manjula


--- Matthew Webster <matthew_webster@xxxxxxxxxx>
wrote:
>
>
>
>
> Manjula,
>
> Please see my append to aspectj-dev for a good
> tracing aspect example:
>
http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg01261.html.
> If you want
> per-thread tracing i.e. one logger per thread
> instead of the usual one
> logger per class you will need to make your Logger a
> ThreadLocal. Only do
> this if you want to control tracing on a per-thread
> basis because most
> implementations allow you to distinguish outputs
> produced on different
> threads.
>
> Matthew Webster
> AOSD Project
> Java Technology Centre, MP146
> IBM Hursley Park, Winchester,  SO21 2JN, England
> Telephone: +44 196 2816139 (external) 246139
> (internal)
> Email: Matthew Webster/UK/IBM @ IBMGB,
> matthew_webster@xxxxxxxxxx
> http://w3.hursley.ibm.com/~websterm/
>
> Manjula Jayaraman <manjuv123@xxxxxxxxx>@eclipse.org
> on 03/05/2005 23:27:04
>
> Please respond to aspectj-users@xxxxxxxxxxx
>
> Sent by:    aspectj-users-bounces@xxxxxxxxxxx
>
>
> To:    aspectj-users@xxxxxxxxxxx
> cc:
> Subject:    [aspectj-users] Question on Tracing
> Aspect
>
>
> Hi All,
>
> I'm new to Aspect J. I wrote my first aspect using
> Aspect J for tracing. I would like to log a message
> upon entry and exit of all the methods in ALL the
> packages in my project.
>
> I've a class called EspressoLog as follows:
>
> public class EspressoTrace {
>
>         private static Logger logger = null;
>
>         public static void initLogger(Logger l) {
>                 logger = l;
>         }
>         public static void traceEntry(String
> message)
> {
>                 logger.debug("Entering : " +
> message);
>         }
>
>         public static void traceExit(String message)
> {
>                 logger.debug("Exiting : " +
> message);
>         }
> }
>
> I've another class as follows
>
> aspect EspressoTraceAspect {
>
>         private Logger logger;
>
>
>         pointcut traceCall() : target(*) &&
> execution(public *
> com.apple.ist.espresso.xmlparser..*(..));
>
>         before() : traceCall() {
>
>
EspressoTrace.initLogger(EspressoLogger.getLogger(thisJoinPointStaticPart.getSignature().getName().getClass()));

>
>                 EspressoTrace.traceEntry("" +
> thisJoinPointStaticPart.getSignature().getName());
>         }
>
>         after() : traceCall() {
>                 EspressoTrace.traceExit("" +
> thisJoinPointStaticPart.getSignature().getName());
>         }
>
> }
>
>
> My problem is that i'm calling initLogger every time
> in before method of my EspressoTraceAspect. But the
> efficient way to do this is to call only once per
> invocation of a class not before the invocation of
> each method in that class. how can i achieve this?
>
>
> Also, if the same class is called through multiple
> threads having the Logger attribute as static in
> EspressoTraceAspect would not help. How should i
> handle that?
>
> Thanks for any input in advance,
> Manjula
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam
> protection around
> http://mail.yahoo.com
> _______________________________________________
> 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
>

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users




Back to the top