Hi,

I am using AOP to log exceptions from methods after they are thrown. I have an 
Aspect which does the following:-

   @AfterThrowing(pointcut = "execution(* *(..))", throwing = "ex")
   public void logExceptions "(JoinPoint jp, Throwable ex) {

       Logger exceptionLogger = 
LoggerFactory.getLogger(jp.getStaticPart().getSignature().getDeclaringTypeName());
       exceptionLogger.error(ex.getMessage(), ex);
      }

Now, my logback config is set to log the method and line number as follows:-

%class\(%M:%L\)

This works great for classes which don't use the aspect but for the classes 
which throw the exception I get the method logged as "logExceptions" (ie. the 
method in the Aspect) and the line number of the line where the 
exceptionLogger.error is called.
What I really want to log is the calling class and the method which threw the 
exception.

So I used %logger% instead of %class% which worked great (it gave me the 
calling class) BUT I can't see a way to get the method from the logger (I can 
get it via the AOP joinpoint but that doesn't help!). Is it possible?

I also tried using %caller{2} which did work (although the line number wasn't 
accurate) but I'd like to remove the Caller+0 part and reformat the Caller+1 
line to look the same as the output from %class\(%M:%L\) - not sure if this is 
possible or
whether there is a simpler way to achieve what I want

Any advice much appreciated!

Many thanks

Mandy


Sent from a mobile device
_______________________________________________
Logback-user mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user

Reply via email to