Una buena práctica es utilizar el marco java.util.logging
A continuación, puede registrar los mensajes en cualquiera de estos formatos
log.warning("..");
log.fine("..");
log.finer("..");
log.finest("..");
O
log.log(Level.WARNING, "blah blah blah", e);
continuación, puede utilizar a logging.properties (ejemplo a continuación) para alternar entre los niveles de registro y hacer todo tipo de cosas inteligentes, como iniciar sesión en archivos, con rotación, etc.
handlers = java.util.logging.ConsoleHandler
.level = WARNING
java.util.logging.ConsoleHandler.level = ALL
com.example.blah = FINE
com.example.testcomponents = FINEST
Marcos como log4j y otros deben evitarse en mi opinión, Java ya tiene todo lo que necesita.
EDITAR
Esto se puede aplicar como una práctica general para cualquier lenguaje de programación. Ser capaz de controlar todos los niveles de registro desde un único archivo de propiedades suele ser muy importante en las aplicaciones empresariales.
Estos suelen tener funciones avanzadas, como el inicio de sesión automático de la fuente y el filtrado por nivel O ubicación de origen. Esto hace que la depuración sea mucho más fácil. ¡Usa uno de estos! (también echa un vistazo a Chainsaw) –