How to automatically log the entry/exit of methods in Java?

℡╲_俬逩灬. 提交于 2019-11-28 17:55:46
Salles

I suggest the use of Aspect Oriented Programming.

For example, using the AspectJ compiler (which can be integrated to Eclipse, Emacs and others IDEs), you can create a piece of code like this one:

aspect AspectExample {
    before() : execution(* Point.*(..))
    {
         logger.entering(thisJoinPointStaticPart.getSignature().getName(), thisJoinPointStaticPart.getSignature().getDeclaringType()   );

    }

    after() : execution(* Point.*(..))
    {
         logger.exiting(thisJoinPointStaticPart.getSignature().getName() , thisJoinPointStaticPart.getSignature().getDeclaringType()  );

    }
}

This aspect adds a logging code after and before the execution of all methods in the class "Point".

You should look at Aspect oriented programming. I would suggest Spring AOP or AspectJ as something that you should look at.

Also, here's a quick tutorial to help you get started with Logging with Spring AOP

As already suggested, use AOP with @Loggable annotation from jcabi-aspects (I'm a developer):

@Loggable(Loggable.DEBUG)
public String load(URL url) {
  return url.openConnection().getContent();
}

The library also contains an AOP aspect which understands these annotations and automatically logs method calls, their arguments, and execution time through SLF4J.

Also, check this blog post that explains the details: http://www.yegor256.com/2014/06/01/aop-aspectj-java-method-logging.html

Have you tried to look at slf4j? It has LocationAwareLogger that can collect automatically method name.

You should look at Aspect Oriented Programming, particularly the around() joinpoint that would be useful to log the entry and exit of methods that you would like to qualify in the definition.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!