Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] System.out.prinltn and advicing

Oh by the way, this pattern you describe does not work because the
field load is a singular event. In other words, the call println()
does not happen in the cflow of the field load but *after* it.

Eric

On 01/10/2007, hermod.opstvedt@xxxxxxxxx <hermod.opstvedt@xxxxxxxxx> wrote:
>
>
> Hi
>
> I solved it :)
>
>
>
> pointcut systemOut() : get(* System.out);
>
> pointcut systemErr() : get(* System.err);
>
> pointcut sysout() : call(void *.println(..)) && !within(SysOutLoggAspect) &&
> (cflow(systemOut()) || cflow(systemErr()));
>
> This seems to do the trick.
>
> Hermod
>
>
>
> -----Original Message-----
> From: aspectj-users-bounces@xxxxxxxxxxx
> [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of
> hermod.opstvedt@xxxxxxxxx
> Sent: Monday, October 01, 2007 2:12 PM
> To: aspectj-users@xxxxxxxxxxx
> Subject: [aspectj-users] System.out.prinltn and advicing
>
>
>
> Hi
>
> I am trying to write an advice that traps calls to System.out.println and
> System.err.println.
>
> If I write the advice as follows:
>
> public aspect SysOutLoggAspect {
>
>         private final Logger LOGGER =
> Logger.getLogger(SysOutLoggAspect.class);
>
>         pointcut sysout() : (call(void System.out.println(..)) || call(void
> System.err.println(..)) ) && !within(SysOutLoggAspect);
>
>         void around(Object obj) : sysout() && args(obj) {
>                 Level level = LOGGER.getEffectiveLevel();
>
> LOGGER.log(thisJoinPoint.getSignature().getDeclaringTypeName(),
> level,
>                                 obj, null);
>         }
> }
>
> It does not apply the advice, and issues a warning (no match for this type
> name: System.out [Xlint:invalidAbsoluteTypeName])  about it
> in Eclipse (AJDT). If I however rewrite the pointcut to:
>
>         pointcut sysout() : call(void *.println(..)) &&
> !within(SysOutLoggAspect);
>
> It does apply the advice, but I have no garantee that the method resides
> with System.out or System.err
>
> What is the best way to solve this?
>
> Hermod * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * * *
>
> This email with attachments is solely for the use of the individual or
> entity to whom it is addressed. Please also be aware that the DnB NOR Group
> cannot accept any payment orders or other legally binding correspondence
> with
> customers as a part of an email.
>
> This email message has been virus checked by the anti virus programs used
> in the DnB NOR Group.
>
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>
> This email with attachments is solely for the use of the individual or
> entity to whom it is addressed. Please also be aware that the DnB NOR Group
> cannot accept any payment orders or other legally binding correspondence
> with
> customers as a part of an email.
>
> This email message has been virus checked by the anti virus programs used
> in the DnB NOR Group.
>
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>


-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada


Back to the top