Recientemente acabamos de liberar un proyecto sobre el cual trabaje. Despúes de un par de días productivos encontramos algunos threads que se quedaban bloqueados. Revisando el dump de los threads las clases de log4j estaban bloqueando el thread cuando intentaban escribir a un archivo.

Las causas que originaron estos bloqueos fueron:
- La aplicación esta instalada en un cluster de tres servidores.
- Se configuro el log4j para que escribiera en un solo archivo appender.
- La aplicación es de misión crítica y recibe un gran número de peticiones simultáneas.
- A esto se le suma que la aplicación invocaba en varios lugares la función log4j.debug, enviando gran cantidad de texto al archivo appender.
A mi me pareció rasonable la causa y el efecto, pero nunca me había imaginado que el loggeo (o loggin) de las aplicaciones pudiera causar tal conflicto. No estoy culpando a la libreria de Apache Commons, más bien, quiero presentar el caso, para que lo puedan tomar en cuenta en desarrollo de sistemas de misión crítica.
Aquí les presento algunas referencias que encontré acerca del buen (o mal) uso del loggeo:
Posted by rrubio74 