2011-12-28 19 views
6

Sto riscontrando un problema durante la stampa dello stacktrace nel mio file di registro. Log4j.properties:log4j tronca 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 

quando accedo un'eccezione del genere nella mia classe UserGuard.java:

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

Ciò si traduce nel mio application.log:

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

No pila traccia mostrata Questo è davvero fastidioso. Grazie!

Provato con stesso pom.xml e stesso log4j.properties su un'altra macchina e funziona bene. Dovrei pensare che il problema sia la mia versione java?

+0

'log4j.additivity.file = false' –

+0

Il problema si verifica ancora se si utilizza un appender diverso, ad esempio ConsoleAppender? Hai provato a eseguire log4j con l'output di debug abilitato in modo da poter vedere se ci sono errori nella configurazione di log4j? – chrisbunney

+0

Ho provato entrambi senza successo. Vedi la mia modifica – Gonzalo

risposta

6

vostre tracce dello stack sono molto probabilmente sempre troncati a causa di un'ottimizzazione in Hotspot. L'ottimizzazione crea solo lo stacktrace identico un numero limitato di volte e quindi le istanze future dell'eccezione dallo stesso posto esatto non la costruiscono.

È possibile disattivare questa ottimizzazione utilizzando il flag -XX:-OmitStackTraceInFastThrow o tornare ai registri precedenti per trovare la prima occorrenza di questa eccezione (viene registrata una volta, quindi ottimizzata in seguito).

Vedere questo relativo StackOverflow question e this one e questo blog post over here.

+1

Grazie mille! L'ha fatto! – Gonzalo