2013-07-12 21 views
6

So che c'è uno NullAppender in log4j. Ma non riesco a trovare l'appender nel logback. C'è un modo migliore per ignorare tutti i log in logback?Il logback ha una NullAppender?

+1

http://stackoverflow.com/questions/5924089/how-to-configure-logback-to-skip- logging-messages-from-org-package-with-all-le o usare 'EvaluatorFilter' – Ghostman

+1

Questa domanda non è chiaramente un duplicato. Il filtraggio è completamente diverso dall'avere la possibilità di specificare un appender nullo. – pdeschen

risposta

4

L'impostazione del livello di registro su OFF ignorerà tutti i registri.

<logger name="..." level="OFF" /> 
+0

+1. Puoi aggiungere ulteriori dettagli alla tua risposta per mostrare un esempio. Forse qualcosa come: \t '' – Gray

3

Solo per curiosità, qual è il punto utilizzando un NullAppender (che credo sia un Appender che non fare nulla), mentre è possibile semplicemente non impostando qualsiasi appender ad un registratore?

E, il modo corretto per disattivare tutto il registro è impostare il livello di registro su OFF.


Con il commento di @djechlin, credo che valga la pena menzionare anche Filtri in LogBack. Se si desidera semplicemente di spegnere tutti i messaggi che passano attraverso un appender, si può semplicemente fare uso di Soglia Filtro:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- Deny everything below OFF, that means deny everything --> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <level>OFF</level> 
    </filter> 
    .... other config 
</appender> 
+0

Ho molti pkgs nel progetto e condividono la stessa configurazione ROOT. E in qualche modo voglio ignorare tutti i log per le classi solo in pkg1. – DeepNightTwo

+0

Quindi impostare semplicemente il livello di registro di pkg1 su OFF. Questo è uno degli scopi principali dell'utilizzo della libreria di registrazione di tipo log4j: è possibile controllare il comportamento del logger individuale (e del relativo figlio). Se hai un appender nullo, dovrai comunque configurare il tuo log4j per impostare il logger pkg1 per usare l'appender null e impostare la sua additività su false, per cui è semplicemente lo stesso posto in cui hai impostato il livello di log per pkg1. –

+0

Molti logger che richiedono un appender che dovrebbe essere disabilitato a seconda della configurazione (ad esempio dev/prod). Per fare un cambio DRY l'appender deve essere annullato. – djechlin

4

si può sempre scrivere uno:

public class NullAppender extends UnsynchronizedAppenderBase<ILoggingEvent> { 

    @Override 
    protected void append(ILoggingEvent eventObject) { 
     //no-op 
    } 
} 
6

Questa è una vecchia questione, ma le risposte già date non rispondono in realtà.

C'è un appender "nullo", ma questo non è quello che viene chiamato. Credo che l'autore del logback preferisca il termine "no-op" quando ci si riferisce a implementazioni che esistono per soddisfare alcuni requisiti di compilazione, test o di altro tipo, ma in realtà non eseguono alcuna operazione. L'implementazione appender che è stato originariamente chiesto è:

ch.qos.logback.core.helpers.NOPAppender 

javadoc

source