2010-02-13 16 views

risposta

10

Suggerirei di andare con SLF4J invece di disaccoppiare l'applicazione da specifici framework di registrazione. Ha adattatori per vari protocolli di registrazione popolari come Jakarta Logging, JDK1.4 logging, log4j ecc. Che lo rendono una buona astrazione per le esigenze di registrazione.

+0

Una volta avviato per SLF4J, andare anche allo LogBack poiché è la versione migliorata di log4j (stesso autore). – Verhagen

3

La classe di logger non faceva parte di jdk in precedenza, quindi sono nate diverse implementazioni di libreria. La libreria Log4j ha uno dei set più completi di utilità di registrazione (Formatters, Appenders, ecc.). Tuttavia, per la maggior parte degli sviluppatori questo sarebbe eccessivo e il semplice java.util.Logger sarebbe sufficiente.

Personalmente utilizzo un wrapper personalizzato rispetto all'implementazione del mio logger. Ciò mi consente di definire chiamate personalizzate per eseguire il logging/auditing funzionale.

+0

Anche per compiti semplici, Log4j è molto preferibile a 'java.util.logging', che è semplicemente brutto – skaffman

+0

Probabilmente no! Ricordo che uno degli amici di mio fratello minore ha inviato il suo incarico che non sarebbe stato eseguito a causa della dipendenza da log4j. Il problema è con classpath, il suo revisore non ne fu così colpito. Alcune persone sono solo riluttanti ad imparare. – questzen

+2

Sì, be ', per fortuna gli incarichi di casa di tuo fratello non governano ciò che è e non è una buona pratica in Java. – skaffman

2

Trovo Log4j più flessibile quando si tratta di modificare il cfg di registrazione senza ri-compilare il codice nell'ambiente di produzione.

+0

Sì, sceglierei sempre/consiglio di utilizzare log4j, oltre alla registrazione Java predefinita. Poi ho scoperto la registrazione commons, dove è possibile in fase di start-up prendere questa decisione. Che è grandioso, come forse è richiesto Java standard di produzione (per qualsiasi motivo). E durante lo sviluppo hai la flessibilità/potenza di log4j. Ma al giorno d'oggi non userei più entrambi questi pacchetti! I pacchetti che consiglierei di utilizzare ora sono SLF4J (http://www.slf4j.org/) e BackLog (http://logback.qos.ch/). – Verhagen

3

Ci sono il progetto Apache Commoms Logging e SLF4J, ognuno dei quali astrae la libreria di registrazione sottostante.

In pratica tendo ad usare Log4J sulle classi di registrazione incorporate. Soprattutto perché Log4J può essere configurato per web-app in un server delle applicazioni, mentre la registrazione JDK è configurata per JVM.

+0

La registrazione di Commons ha avuto seri problemi di caricamento del classpath. Stai attento. –

+0

Solo in determinati ambienti specifici; nella maggior parte delle situazioni va bene. – skaffman

+1

In effetti si poteva vedere SLF4J come la versione migliorata della registrazione commons. – Verhagen

3

L'approccio che raccomando attualmente è l'utilizzo di SLF4J come API di registrazione. Puoi quindi scegliere la struttura di registrazione in base alle tue esigenze mentre le scopri.

Ho fatto una recensione su ciò che considero la migliore pratica per iniziare con SLF4J e un semplice "log to System.out" che è attualmente posizionato su. http://runjva.appspot.com/logging101/index.html

Speriamo che sia utile.