2011-12-28 20 views
6

Tengo un problema al imprimir stacktrace en mi archivo de registro. Log4j.properties:log4j truncates stacktrace

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=/var/log/app/application.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n 

log4j.rootLogger=warn, file 
log4j.logger.com.app=info, file 
log4j.additivity.com.app=false 

cuando registro una excepción como esta en mi clase UserGuard.java:

} catch (Exception e) { 
    log.error("Uncatched error", e); 
    response.setEntity(new StringRepresentation(" ")); 
    response.setStatus(Status.SERVER_ERROR_INTERNAL); 
} 

Esto se traduce en mi application.log:

2011-12-28 07:30:03 UserGuard [ERROR] Uncatched error 
java.lang.NullPointerException 

Sin pila traza mostrada. Esto es realmente molesto Gracias!

Probado con el mismo pom.xml y el mismo log4j.properties en otra máquina y funciona bien. ¿Debería pensar que el problema es mi versión java?

+0

'log4j.additivity.file = false' –

+0

¿El problema persiste si utiliza un appender diferente, como ConsoleAppender? ¿Ha intentado ejecutar log4j con la salida de depuración habilitada para que pueda ver si hay algún error en su configuración de log4j? – chrisbunney

+0

Probé ambas sin éxito. Ver mi edición – Gonzalo

Respuesta

6

Sus seguimientos de pila es más probable quedan truncados debido a una optimización en el hotspot. La optimización solo genera el stacktrace idéntico un número limitado de veces, y luego las instancias futuras de la excepción desde el mismo lugar exacto no lo compilan.

Puede desactivar esta optimización con el indicador -XX:-OmitStackTraceInFastThrow o volver a los registros anteriores para encontrar la primera instancia de esta excepción (se registra una vez y luego se optimiza más adelante).

Ver este relacionado StackOverflow question, y this one, y blog post over here.

+1

¡Muchas gracias! Eso lo hizo! – Gonzalo

Cuestiones relacionadas