Почему нам нужны два обработчика записи в tomcat logging.properties?

Из документов:

handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

Я не нашел объяснений, почему нужно писать обработчики и после .handlers? Существуют ли общие правила для похожих файлов свойств? Благодарю.

Первая строка объявляет набор обработчиков, которые могут / будут использоваться, а второй назначает обработчики конкретному логгеру (в этом случае корневой .handlers как .handlers не имеет ни .handlers префикса).

Позже в logging.properties каждый обработчик.

Чтобы расширить свой ответ , я не понял сначала …

handlers = ... строка может рассматриваться как «объявление переменной».

 handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler 

«Я объявляю регистратор имени 1catalina и 1catalina FileHandler , регистратор имени 2localhost и 2localhost FileHandler .. регистратор типа ConsoleHandler (не назвав последнего, так как есть только один, поэтому нет двусмысленности)».

С другой стороны, строка .handlers будет «присваиванием».

 .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

«Я назначаю обработчики 1catalina & console для корневого регистратора. Это означает, что любое ведение журнала, выполняемое в приложении, будет отправлено этим обработчикам (если не превышено)»

. in .handlers означает, что вы применяете это. В этом случае, поскольку ничего не осталось слева . , вы применяете его к корневому журналу, из которого наследуются все регистраторы.

Но это точно такой же принцип в действии в этой строке:

 com.mycompany.MyClass.handlers = java.util.logging.ConsoleHandler 

В этом случае есть что-то слева от . для .handlers Это означает, что мы не назначаем эти обработчики корневому журналу, а конкретному регистратору. С этой строкой вы говорите: «Я переписываю назначение обработчика стандартного регистратора для этого конкретного регистратора. В этом случае не действуйте так, как если бы вы основывались на конфигурации корневого регистратора. В этом случае я хочу, чтобы вы использовали только ConsoleHandler для этого регистратора “.

Это означает, что любое ведение журнала для MyClass будет отправлено только на ConsoleHandler а не на любой другой обработчик. Эта строка не влияет на другие classы.

Опять же, я просто повторяю объяснение от soulcheck, но более подробно, в котором мне нужно было понять разницу.

  • Какова видимость переменных экземпляра @synthesized?
  • В чем разница между атрибутом и собственностью?
  • C # Получить значение свойства без создания экземпляра?
  • Interesting Posts

    Сбросить ассоциации файлов по умолчанию (idx открывает w / winRar)

    Как получить Mac OS X Terminal.app и прокрутку экрана / vim, чтобы играть хорошо?

    Получить все classы в пути classа

    Как я могу рекурсивно извлекать zip-файлы в Windows, включая удаление?

    Два разных значения по одному и тому же адресу памяти

    Каков правильный способ отладки медленной установки Windows?

    Плохой URL-адрес при запросе с помощью NSURL

    Как перенаправить вывод из программы с бесконечным циклом

    Поддерживает ли Firefox подстановочные знаки в NTLM / Negotiate URI для автологин?

    Можно ли использовать телефон Android в качестве устройства ввода для Windows через Bluetooth?

    Множественное затухание изображения в CSS – без (java) скрипта

    Установите Windows 8 Upgrade на новый SSD?

    Как изменить цвет строки состояния для соответствия приложению в Lollipop?

    В чем разница между оболочкой, консолью и терминалом?

    Разница между кодированием и шифрованием

    Давайте будем гением компьютера.