2013-07-12 15 views
6

Wiem, że w log4j jest NullAppender. Ale nie mogę znaleźć aplikanta w logback. Czy istnieje lepszy sposób na ignorowanie wszystkich dzienników w logback?Czy logback ma NullAppender?

+1

http://stackoverflow.com/questions/5924089/how-to-configure-logback-to-skip- logowanie-wiadomości-z-org-pakietu-z-wszystkimi-le lub użyj 'EvaluatorFilter' – Ghostman

+1

To pytanie najwyraźniej nie jest duplikatem. Odfiltrowanie jest zupełnie inne niż możliwość określenia nieuczciwego aplikanta. – pdeschen

Odpowiedz

4

Ustawienie poziomu rejestru na OFF spowoduje zignorowanie wszystkich dzienników.

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

+1. Czy możesz dodać więcej szczegółów do swojej odpowiedzi, aby pokazać przykład. Może coś takiego: \t '' – Gray

3

prostu ciekawi, co to jest punkt przy użyciu NullAppender (co moim zdaniem jest to appender że nic nie robić), gdy można po prostu nie ustawienie żadnego appender do rejestratora?

Odpowiednim sposobem wyłączenia wszystkich dzienników jest ustawienie poziomu rejestru na WYŁ.


Z komentarzem od @dlićlin, uważam, że warto również wspomnieć o filtrach w LogBack. Jeśli chcesz po prostu wyłączyć wszystkie wiadomości przeżywa appender, można po prostu skorzystać z Threshold Filtr:

<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

Mam wiele pkg w projekcie i mają one tę samą konfigurację ROOT. I jakoś chcę zignorować wszystkie logi dla klas tylko w pkg1. – DeepNightTwo

+0

Następnie wystarczy ustawić poziom rejestrowania pkg1 na WYŁ. Jest to jeden z głównych celów używania biblioteki log4j podobnej do logów: możesz kontrolować zachowanie pojedynczego rejestratora (i jego potomka). Jeśli masz null appender, nadal będziesz musiał skonfigurować log4j, aby ustawić logger pkg1 na użycie appendera zerującego i ustawić jego addytywność na false, dla którego jest to po prostu to samo miejsce, w którym ustawiłeś poziom dziennika dla pkg1. –

+0

Wiele rejestratorów, które wymagają jednego aplikanta, który powinien być wyłączony w zależności od konfiguracji (np. Dev/prod). Aby dokonać zmiany w trybie DRY, aplikator musi zostać anulowany. – djechlin

4

Zawsze można napisać:

public class NullAppender extends UnsynchronizedAppenderBase<ILoggingEvent> { 

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

Jest starą pytanie, ale odpowiedzi już udzielone nie odpowiadają na nie.

Tak

Istnieje "null" appender, ale to nie jest to, co nazywa. Sądzę, że autor logback preferuje termin "no-op", gdy odwołuje się do implementacji, które istnieją, aby spełnić pewne wymagania kompilacji, testu lub innych wymagań projektowych, ale w rzeczywistości nie wykonują żadnej operacji. Realizacja appender, który pierwotnie był pytany o to:

ch.qos.logback.core.helpers.NOPAppender 

javadoc

source