Registrazione usando SL4J, registrazione di Jakarta Commons, log4j per librerie di terze parti e il mio codice

StackOverflow https://stackoverflow.com/questions/462566

Domanda

Ho alcune domande sulla registrazione, più specificamente sulla sua configurazione e sul suo funzionamento.

Il progetto che sto facendo utilizzerà Wicket , Primavera e Hibernate . So che Wicket e Hibernate usano Simple Logging Facade per Java ( SL4J ) e che Spring sta usando componente di registrazione da Apache Commons .

coesisteranno felicemente? Ho pensato di utilizzare log4j insieme a SL4J e al componente di registrazione dei comuni Apache , pensi che sia una buona idea?

Posso configurarli tutti per generare dati di registrazione in un file comune? O dovrei usare file separati? O dovrei archiviare i messaggi di registrazione nel database? (Preferirei di no, poiché trovo che il grepping etc sui file di testo sia abbastanza conveniente.)

Per la primavera immagino di aver bisogno di un qualche tipo di file di configurazione per il componente di registrazione di Apache Commons e dove lo dirigo per usare log4j?

Quando li avrò impostati, immagino che tutto funzioni e imposto il livello di registrazione su INFO, dato che è abbastanza certo che tutti e tre i framework generino delle informazioni in quella modalità? O c'è un modo ancora migliore per essere sicuri?

E la mia ultima domanda. Nel progetto che sto iniziando, mi consigliate di utilizzare SL4J per i miei scopi di registrazione? (Pensavo che avrei usato log4j direttamente, ma prima avevo imparato qualcosa in più sulla registrazione e molte librerie rispettabili sembrano scegliere il percorso di un ponte / facciata per le loro esigenze di registrazione. E se ci rende flessibili senza aggiungere costo non c'è motivo per non farlo in questo modo.)

Non vedo l'ora di saperne di più su come si sta effettuando la registrazione. È una nuova area per me in cui non vedo l'ora di migliorarmi.

È stato utile?

Soluzione

Beh, SLF4J è solo una facciata, come la registrazione dei beni comuni, il che significa che hanno ancora bisogno di qualcos'altro per funzionare. Consentono agli autori delle biblioteche di non forzare gli utenti ad avere librerie e configurazioni a più registri. Log4j e logback sono librerie di registrazione regolari.

Vedi qui per maggiori informazioni.

SLF4J ha un bridge di registrazione dei beni comuni che puoi utilizzare per sostituire la libreria di registrazione dei beni comuni. Penso che lo schema lì spieghi molto bene la situazione.

Ora, devi solo usare slf4j-logj12.jar per avere i log comuni e slf4j usa log4j (o qualsiasi altra cosa tu abbia scelto; tra l'altro, il logback non ha bisogno di una libreria aggiuntiva da usare con slf4j) come motore di supporto .

La tua applicazione avrà quindi

  • jcl104-over-slf4j.jar (per collegare i comuni di Jakarta accedendo a slf4j)
  • slf4j.jar (per ibernazione e altri di usare slf4j)
  • slf4j-logj12.jar (per slf4j utilizzare log4j come backend)
  • log4j.jar (per la tua applicazione da utilizzare. Anche tutte le configurazioni verranno eseguite qui)

Altri suggerimenti

Ecco come reindirizzare tutto su SLF4J:

  • rimuovi commons-logging.jar dal tuo percorso di classe. Se stai usando Maven e hai problemi a sbarazzarti del log comune, vedi this .

  • inserisci jcl-over-slf4j.jar nel tuo percorso di classe (viene fornito nella distribuzione SLF4J). Questa è una sostituzione drop-in che imita le classi JCL, ma chiama SLF4J internamente. Questo si occuperà di Spring e di qualsiasi altro framework che utilizza JCL.

Collega SLF4J al tuo backend preferito (Log4J, Logback ...) inserendo slf4j-xxx.jar nel percorso di classe. Configura il backend per registrare tutte le categorie in un file e il gioco è fatto.

Per quanto riguarda l'utilizzo di SLF4J nella tua applicazione, non è strettamente necessario. Librerie come JCL e SLF4J sono state originariamente progettate per le persone che scrivono librerie e non vogliono bloccare i loro clienti in un particolare framework di registrazione.

PS: a proposito, JCL = Jakarta Commons Logging

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top