2012-01-30 19 views
6

Ho bisogno di alcuni suggerimenti in termini di registrazione SLF4J.registrazione SLF4J su file vs DB vs Solr

Attualmente, stiamo usando SLF4J registrazione (vincolante log4j) per un nostro web app Java, che utilizza la semplice ConsoleAppender. Il nostro prossimo passo è la ricerca di luoghi in cui possiamo salvare i registri.

I nostri processi di app di circa 100.000 messaggi al giorno. Ogni messaggio genera circa 60 -100 righe di log. Il nostro obiettivo è quello di essere in grado di cercare e trovare rapidamente i messaggi non riusciti (utilizzando un messageId) e identificare le cause dell'errore.

La mia domanda è: quale dei seguenti è un buon posto per memorizzare i nostri log:

  • File (s)
  • DB
  • Solr

Grazie.

risposta

11

considerazione il passaggio dal log4j e con il logback implementazione delle API slf4j Logback ha una lunga lista di appenders disponibili.

Penso che forse le vostre domande è più preoccupante rendere i registri delle ricerche. La risposta dipende da cosa stai cercando.

  • Per applicazioni semplici mi basta usare un file appender rotolamento e grep questo per i messaggi che mi interessano.
  • applicazioni più complesse saranno inoltre i messaggi di log al database.
  • Attualmente non è disponibile un appender Solr per log4j e logback. Dovrebbe tuttavia essere facile scrivere utilizzando l'API solrj
  • Per i messaggi di log di monitoraggio c'è una lilith che è una GUI remota per i messaggi di log. Non so quanto sia scalabile, ma è certamente interessante per dimostrazioni e monitoraggio semplice.

Aggiornamento

Come suggerito da Sebastien c'è anche un Graylog2 appender per logback. Ora disponibile in Maven centrale

<dependency> 
    <groupId>me.moocar</groupId> 
    <artifactId>logback-gelf</artifactId> 
    <version>0.9.6p2</version> 
</dependency> 

Naturalmente questo dipenderà da avere un server graylog2 installato.

+1

C'è anche Graylog ma non penso che si riduca molto bene. –

+0

La nostra ricerca sarà semplice: messageId + "qualche termine di ricerca". Cercherò l'opzione logback + DB. – scabbage

0

Non vi è alcuna funzione nelle specifiche della servlet che fornisce un percorso per il file system per la registrazione dei registri.

Quindi la soluzione più robusta ea lungo termine è semplicemente utilizzare java.util.logging (con il binding slf4j) e lasciare che il contenitore Web gestisca i registri generati.

si hanno circa 10 milioni di voci di registro pr giorno. Ciò significa che devi stare attento con l'utilizzo delle risorse. La comunicazione tra database è molto più costosa dell'accesso ai file. Ti suggerirei di tracciare gli approcci per vedere se è possibile ottenere le prestazioni necessarie per prendere in considerazione qualsiasi altra cosa, ma i file flat vengono sottoposti a backup ogni notte.