2010-04-07 19 views
10

In questo momento per il mio ConversionPattern ho:Log4j nome spettacolo pacchetto

log4j.appender.A1.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n 

Quello che mi piacerebbe fare è includere anche il nome del pacchetto completo con la classe (% F:% L) ma posso' t trovare any config to do so in the docs. Capisco che questo sarà più lento, ma è solo per il debug e non quando il sistema sarà in produzione.

risposta

21

Forse ti ho solo frainteso, ma% C genererà la tua classe con il pacchetto.

Da tuoi documenti a cui fa riferimento:

% C

utilizzata per inviare il nome completo della classe del chiamante che emette la richiesta di registrazione. Questo identificatore della conversione può essere opzionalmente seguito da da specificatore di precisione, ovvero una costante decimale tra parentesi.

Se viene dato uno specificatore di precisione, verrà stampata quindi solo il numero corrispondente di destra maggior parte dei componenti del nome classe . Per impostazione predefinita, il nome della classe viene emesso nel formato completo .

Ad esempio, per il nome classe "org.apache.xyz.SomeClass", lo schema % C {1} visualizzerà "SomeClass".

ATTENZIONE La generazione della classe chiamante è lenta. Pertanto, l'utilizzo deve essere evitato a meno che la velocità di esecuzione non sia non un problema.

Aggiornamento: In molti casi è possibile utilizzare% c inoltre, che stamperà la classe completa con il pacchetto anche, se la vostra categoria è la classe-nome. Per esempio, quando le tue cose fare come questo quando l'inizializzazione del registro:

private static final Log LOG = LogFactory.getLog(MyClazz.class); 

Utilizzando% c non è lenta.

+0

Quello sarebbe !! L'ho completamente perso. Doh. –

+0

puoi testare il tuo modello online in questo sito: http://log4jtester.com/ –

1

L'utilizzo di C{1} è lento. Si prega di vedere i dettagli di seguito:

secondo il seguente link:

utilizzata per inviare il nome completo della classe del chiamante emissione la richiesta di registrazione. Questo identificatore di conversione può essere facoltativamente seguito da specificatore di precisione, ovvero una costante decimale nelle parentesi . Se viene specificato un specificatore di precisione, verrà stampato solo il numero corrispondente di numero di componenti più a destra del nome della classe . Per impostazione predefinita, il nome della classe viene emesso nel formato completo .

Ad esempio, per il nome classe org.apache.xyz.SomeClass, il modello %C{1} emetterà SomeClass.

AVVISO La generazione delle informazioni sulla classe del chiamante è lenta. Pertanto, l'uso dovrebbe essere evitato a meno che la velocità di esecuzione non sia un problema.