Почему нам нужны два обработчика записи в 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? Существуют ли общие правила для похожих файлов свойств? Благодарю.
- c # - Как перебирать поля classов и задавать свойства
- Почему никто не принимает публичные поля в C #?
- В чем разница между полем и свойством?
- C # Итерировать через свойства classа
- Любая причина использования автоматически реализованных свойств по сравнению с ручными реализованными свойствами?
- Свойства и поля: нужна помощь в использовании свойств над полями
- Properties.Settings.Default.Save (); -> Где этот файл
- С обновлением версии Java 7 45 свойства системы больше не установлены с тега JNLP «Свойство»,
- Как обнаружить системную информацию типа os или типа устройства
- Автоматически реализованные геттеры и сеттеры против общедоступных полей
- Отладка автоматических свойств
- Сравнение свойств объекта в c #
- Не все отображаемые свойства
Первая строка объявляет набор обработчиков, которые могут / будут использоваться, а второй назначает обработчики конкретному логгеру (в этом случае корневой .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, но более подробно, в котором мне нужно было понять разницу.