2012-12-19 17 views
13

Ho un'applicazione che utilizza slf4j come facciata di logging. Ora vorrei intercettare tutti i messaggi di errore prima che il trasferimento venga distribuito al sistema di registrazione sottostante. È possibile farlo per slf4j? Ho esaminato la documentazione e ho visto che possiamo modificare gli Appenders nell'implementazione (come log4j) per raggiungere questo obiettivo, ma possiamo farlo a livello di facciata? L'intercetta fa cose di base come l'incremento di un contatore globale per il numero di messaggi di errore ecc.Intercept Log Messages slf4j

+1

Non mi sembra una buona decisione di progettazione. In futuro, potresti voler disattivare questa opzione usando la configurazione; forse hai dei requisiti/vincoli specifici che vuoi condividere con noi. –

+1

Il requisito è semplice come quello che ho menzionato. Controlla i log degli errori e invia una notifica se viene soddisfatta una soglia? Stavo cercando un po 'e ho trovato degli Appenders specifici che lo fanno per le implementazioni [link] (http://metrics.codahale.com/manual/logback/) – user1916312

risposta

5

Non c'è nulla per fare ciò nell'API SLF4J.

Ma se il tuo logger è Logback puoi farlo usando un Filter come TurboFilter.

Se non si utilizza Logback, sarà probabilmente necessario qualcosa come un intercettore AspectJ.

+0

E se il caso d'uso particolare è quello di ottenere le metriche del registro, lì sono disponibili appendici che ottengono questo risultato da Codahale Metrics [collegamento] (http://metrics.codahale.com/manual/logback/) – user1916312