Seguimiento a los métodos llamados en toda una aplicación java

Hola javamexico, quería contar con su opinión y comentarios.

Quería saber si hay alguna forma mas adecuada para hacer un seguimiento completo de una aplicación que añadiendo al inicio de cada método el código

if (log.isTraceEnabled()) {
   log.trace("");
}

Lo último utilizando log4j y estableciendo el nivel trace para el log... y claro está, definiendo que información sobre en que clase y método en específico se escribe el mensaje a la bitácora

Aunque pueda parecer exagerado realizar tal seguimiento exhaustivo de cada llamada de métodos en una aplicación, esto me hubiera ahorrado mucho tiempo y esfuerzo en mi anterior trabajo cuando tenía que conocer el funcionamiento de los diferentes módulos (a nivel de código) de la aplicación y para detectar errores.

Aclaro que en una aplicación que he desarrollado hice lo que menciono, añadí aquel código al inicio de cada método y pues funciona... pero quería saber si hay alguna forma mas elegante de hacer esto... o de almenos obtener la información de toda la secuencia de llamadas a métodos y demás.

Incluso tal seguimiento recuerda las trazas de errores que muestra java cuando se presenta una excepción pero esta solo muestra la última secuencia que generó el error.

Agradezco me den sus opiniones sobre este asunto.

Muchas gracias.