2012-09-17 6 views
11

Sto usando slf4j per accedere alla mia applicazione Java. Implica molto il logging e il monitoraggio dei log.
A volte è davvero difficile leggere e trovare informazioni dai registri quando l'intero registro viene stampato con il colore nero.
Solo per renderlo più leggibile, è possibile registrare i diversi tipi di messaggi in diversi colori?
Ad esempio tutti i messaggi del livello di errore in colore rosso o una diversa dimensione del carattere e tutti i messaggi del livello informazioni in colore blu e una diversa dimensione del carattere.
Formattazione di slf4j per registrare i tipi di messaggio con i colori

Qualsiasi suggerimento o aiuto è benvenuto. Thnx.

+0

Forse è utile se si mette il nome di you'r IDE. E puoi chiedere come mappare a Stderr invece di Stdout per i messaggi di errore. – d0x

+0

Il file di registro è un file di testo semplice. Non esiste un concetto di colore. Tuttavia, potresti essere in grado di trovare qualcosa con cui visualizzare il registro che può colorare il codice per te ... – GreyBeardedGeek

risposta

3

Due soluzioni mi vengono in mente. Non sono i colori, ma soluzioni alternative:

  1. Nella configurazione Appender File, è possibile configurare il modello per includere il livello di log (errore, mettere in guardia, ecc). Quindi puoi grep il file, per filtrare i messaggi per livello.

  2. È possibile configurare due appendici di file (per due file di registro separati) con soglia di livello diversa. Per esempio, si potrebbe registrare tutti i registri sul livello di debug (così informazioni, mettere in guardia, errore) in diciamo logs.txt e l'altro avrebbe accedere solo i registri errori in errors.txt

Speranza che aiuta.

1

Non è possibile modificare i colori della registrazione slf4j, perché non ci sono formattatori. SLF4J è un middleware tra l'applicazione e alcune funzionalità di registrazione, ad esempio Log4j o Logback.

È possibile modificare i colori nell'output di Log4j, come spiegato here. Raccomanderei di utilizzare MulticolorLayout da jcabi-log

+0

Grazie per la risposta, ma tutti i tuoi suggerimenti sono per ottenere l'output colorato nella console. Dal momento che ho bisogno di raccogliere i file di log da più sistemi e analizzarli, quindi ho bisogno dei file di registro per essere colorati. – Panshul

+0

"file di registro da colorare"? hm ... :) – yegor256

2

Qualcosa che devi tenere a mente.

In primo luogo, SLF4J è solo una facciata di registrazione. Il modo in cui viene gestito il messaggio di registro effettivo dipende dal legame utilizzato. Quindi la tua domanda non è valida, dovresti invece citare quale implementazione vuoi usare (LogBack? Log4J? Ecc.)

In secondo luogo, "Colorare" non è qualcosa di significativo nella maggior parte dei casi. Ad esempio, se si fa riferimento a un file di registro di solo testo, non è possibile controllare la colorazione perché sono tutti di testo semplice (a meno che l'editor non disponga di un'evidenziazione speciale della sintassi per il formato del messaggio di registro). Può essere significativo se vuoi vedere il colore nella console/terminale, o se stai trasmettendo il tuo log in formato file che ti permette di contenere informazioni sul colore (ad esempio HTML).

Con queste due idee in mente, ecco il mio suggerimento.

LogBack ha il supporto integrato per colorare http://logback.qos.ch/manual/layouts.html#coloring in uscita console. Se stai cercando il modo di vedere il colore nell'output della console e hai il permesso di usare LogBack, questo è quello che stai cercando.

+0

Grazie per la risposta, ma sto usando Log4j e ho bisogno di raccogliere i file di log da diversi sistemi e analizzarli .. quindi non c'è alcun uso di ottenere un output colorato nella console. Ho bisogno di colori nel file di registro .. ma grazie per il suggerimento, proverò l'output HTML. – Panshul

+0

Se riesci a scrivere un file di testo in chiaro con il colore all'interno, puoi aspettarlo. Tuttavia, è qualcosa che è irraggiungibile. Puoi scrivere il tuo visualizzatore che analizza il tuo messaggio di log e ti mostra la formattazione e la visualizzazione. Scommetto se sei disposto a farlo. L'uso dell'HTML e di alcuni CSS può essere la soluzione giusta per te. –

1

Uso i filtri sia per livello di registrazione che per pacchetto. Questo esempio proviene dall'applicazione di avvio Spring.proprietà

logging.level.root=warn 
    logging.level.org.springframework=warn 
    logging.level.org.hibernate=warn 
    logging.level.org.starmonkey.brown=DEBUG 

questo mio modo di vedere solo i messaggi che voglio vedere

+0

Grazie !!! Per me funziona! Sono stato googling per un paio d'ore per 'org.slf4j.Logger' prima di averlo trovato. Si scopre che è legato alle impostazioni di avvio primaverile, non al logger slf4j. Grazie ancora! – abguy