Могу ли я включить / выключить регистрацию CONSOLE в зависимости от системной переменной? - PullRequest
3 голосов
/ 28 января 2011

Мы поддерживаем системную переменную приложения [debug = true | false], я хочу отключить все приложения CONSOLE в log4j при запуске, когда отладка системной переменной равна false.

Является ли лучший способ просто программным сканированием приложений?Или, может быть, есть более элегантный подход, о котором я не знаю?

Любой учебник по сканированию аппендеров приветствуется, даже если это правильный подход.

Ответы [ 2 ]

2 голосов
/ 30 января 2011

Я бы написал специальный фильтр для консольного приложения.Вдоль строки

<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.TTCCLayout">
        <param name="ConversionPattern" value="%d...m%n"/>
    </layout>
    <filter class="OnDebugOnly"/>
</appender>

с фильтром, определенным следующим образом

import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;

public class OnDebugOnly extends Filter {

    static boolean debug;

    @Override
    public int decide(LoggingEvent event) {
        return ( debug ? Filter.NEUTRAL : Filter.DENY ) ;
    }
}

Конечно, это требует корректировки.Например, где определена отладка и как к ней осуществляется доступ.
Neutral - на тот случай, если кто-то добавит другой фильтр ...
Плюс макет только мой, используйте предпочитаемый макет здесь.Я не проверял это; -)

0 голосов
/ 30 января 2011

Вы смотрели на настройку файла .properties для log4j?Вы можете настроить log4j на отправку сообщений журнала в файл, отключить отправку сообщений журнала на консоль для получения информации, предупреждений и т. Д. При необходимости вы даже можете настроить его для каждого класса.Если вы зайдете на этот сайт и перейдете в раздел «Конфигурация», он должен сказать вам, что вам нужно знать.

http://logging.apache.org/log4j/1.2/manual.html

Надеемся, что это ответ на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...