2013-07-12 4 views
6

Я знаю, что в log4j есть NullAppender. Но я не могу найти приложение в журнале. Есть ли лучший способ игнорировать все журналы в журнале?Имеет ли logback NullAppender?

+1

http://stackoverflow.com/questions/5924089/how-to-configure-logback-to-skip- logging-messages-from-org-package-with-all-le или использовать 'EvaluatorFilter' – Ghostman

+1

Этот вопрос явно не дублируется. Фильтрация полностью отличается от возможности указывать нулевой appender. – pdeschen

ответ

4

Установка уровня журнала на OFF будет игнорировать все журналы.

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

+1. Можете ли вы добавить несколько подробностей к своему ответу, чтобы показать пример. Может быть, что-то вроде: \t '' – Gray

3

Просто любопытно, что точка с использованием NullAppender (который я считаю, это Appender, что ничего не делать), а вы можете просто не устанавливать любой Appender к регистратору?

И правильный способ отключения всего журнала - установить уровень журнала в положение ВЫКЛ.


С комментарием @djechlin, я считаю, что также стоит упомянуть фильтры в LogBack. Если вы просто хотите, чтобы отключить все сообщения, идущие через Appender, вы можете просто использовать Threshold Filter:

<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

У меня много проектов pkgs, и они имеют один и тот же конфигурационный файл ROOT. И как-то я хочу игнорировать все журналы для классов только в pkg1. – DeepNightTwo

+0

Затем просто установите уровень журнала pkg1 в положение OFF. Это одна из основных целей использования log4j-подобной библиотеки протоколирования: вы можете контролировать поведение отдельного регистратора (и его дочернего элемента). Если у вас есть нулевой appender, вам все равно нужно настроить log4j, чтобы установить logger pkg1 для использования нулевого приложения и установить его аддитивность на false, для которого это просто то же самое место, где вы устанавливаете уровень журнала для pkg1. –

+0

Многие регистраторы, которым требуется одно приложение, которые должны быть отключены в зависимости от конфигурации (скажем, dev/prod). Чтобы сделать СУШЕЕ изменение, приложение нужно отключить. – djechlin

4

Вы всегда можете написать одно:

public class NullAppender extends UnsynchronizedAppenderBase<ILoggingEvent> { 

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

Это старый вопрос, но ответы, которые уже даны, на самом деле не отвечают.

Да

Существует «нулевой» Appender, но это не то, что она называется. Я считаю, что автор журнала предпочитает термин «нет-op» при обращении к реализациям, которые существуют для удовлетворения некоторых компиляционных, тестовых или других требований к дизайну, но фактически не выполняют никакой операции. Реализация Appender, который был первоначально просил о том:

ch.qos.logback.core.helpers.NOPAppender 

javadoc

source