Класс System.LoggerFinder
- Внешний класс:
System
public abstract static class System.LoggerFinder extends Object
LoggerFinder отвечает за создание, управление и настройку регистраторов для используемой ею базовой платформы. Фабрика регистраторов — это конкретная реализация данного класса, имеющая конструктор без аргументов и реализующая абстрактные методы, определённые в этом классе. Регистраторы, возвращаемые фабрикой регистраторов, могут перенаправлять сообщения журнала в поддерживаемую этим поставщиком систему журналирования. При каждом запуске Java Runtime поддерживается единственный экземпляр LoggerFinder для всей системы, который загружается следующим образом: - Сначала с помощью средства
ServiceLoaderи системного загрузчика классов выполняется поиск пользовательского поставщикаLoggerFinder. - Если поставщик
LoggerFinderне найден, используется системная реализацияLoggerFinderпо умолчанию.
Приложение может заменить систему журналирования даже при наличии модуля java.logging, просто предоставив и объявив реализацию службы System.LoggerFinder.
Реализация по умолчанию
Системная реализация LoggerFinder по умолчанию использует java.util.logging в качестве базовой платформы, если присутствует модуль java.logging. Она возвращает экземпляр регистратора, который перенаправляет сообщения журнала в java.util.logging.Logger. В противном случае, если модуль java.logging отсутствует, реализация по умолчанию возвращает простой экземпляр регистратора, который перенаправляет сообщения журнала уровня INFO и выше в консоль (System.err).
Настройка журналирования
Экземпляры Logger, полученные с помощью фабричных методов LoggerFinder, не могут напрямую настраиваться приложением. За настройку отвечает используемая базовая система журналирования; обычно для этого необходимо применять API, специфичные для этой системы.
Сведения о настройке журналирования для реализации LoggerFinder по умолчанию, использующей java.util.logging в качестве базовой платформы, см. в разделе java.util.logging. Для реализации LoggerFinder по умолчанию, возвращающей простые регистраторы при отсутствии модуля java.logging, настройка зависит от реализации.
Обычно приложение, использующее платформу журналирования, регистрирует сообщения с помощью фасада регистратора, определённого (или поддерживаемого) этой платформой. Приложения, которым требуется использовать внешнюю платформу, должны регистрировать сообщения через связанный с ней фасад.
Системный класс, которому необходимо регистрировать сообщения, обычно получает экземпляр System.Logger для перенаправления сообщений в выбранную приложением систему журналирования.
Библиотеки и классы, которым нужны только регистраторы для создания сообщений журнала, не должны пытаться настраивать регистраторы самостоятельно, поскольку это создаст зависимость от конкретной реализации службы LoggerFinder.
Уровни сообщений и их сопоставление с уровнями базовой платформы
Фабрика регистраторов отвечает за сопоставление
System.Logger.Level с уровнем, поддерживаемым используемой ею системой журналирования.
Фабрика LoggerFinder по умолчанию, использующая java.util.logging в качестве базовой платформы, сопоставляет уровни System.Logger с уровнями java.util.logging соответствующей степени важности — как описано в Logger.Level.
- С версии:
- 9
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый экземпляр LoggerFinder. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
System.Logger |
getLocalizedLogger |
Возвращает локализуемый экземпляр Logger для заданного module. |
abstract System.Logger |
getLogger |
Возвращает экземпляр Logger для заданного module. |
static System.LoggerFinder |
getLoggerFinder() |
Возвращает экземпляр LoggerFinder. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело и подлежит удалению: этот элемент API может быть удалён в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода для этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
LoggerFinder
protected LoggerFinder()
LoggerFinder.- Примечание по реализации:
- Рекомендуется, чтобы реализация службы
LoggerFinderне выполняла длительную инициализацию в конструкторе, чтобы избежать возможной взаимоблокировки или циклической загрузки классов при создании экземпляра поставщика службы.
Подробное описание методов
getLogger
public abstract System.Logger getLogger(String name, Module module)
Logger для заданного module.- Параметры:
-
name— имя регистратора. -
module— модуль, для которого запрашивается регистратор. - Возвращает:
- объект
logger, пригодный для использования в заданном модуле. - Вызывает исключение:
-
NullPointerException— еслиnameимеет значениеnullилиmoduleимеет значениеnull.
getLocalizedLogger
public System.Logger getLocalizedLogger(String name, ResourceBundle bundle, Module module)
Logger для заданного module. Возвращаемый регистратор использует предоставленный пакет ресурсов для локализации сообщений.- Требования к реализации:
- По умолчанию этот метод вызывает
this.getLogger(name, module)для получения регистратора, а затем оборачивает его в экземплярSystem.Logger, перенаправляя все методы, не принимающиеResourceBundleв качестве параметра, на соответствующие методы, которые его принимают, передавая заданныйbundleдля локализации. Так, например, вызовLogger.log(Level.INFO, msg)в итоге приводит к вызовуLogger.log(Level.INFO, bundle, msg, (Object[])null)для обёрнутого экземпляра регистратора. Однако следует учитывать, что по умолчанию строковые сообщения, возвращаемыеSupplier<String>, не локализуются, поскольку предполагается, что такие строки уже являются сформированными сообщениями, а не ключами в пакете ресурсов.Реализация
LoggerFinderможет переопределить этот метод, например, если используемая базовая система журналирования предоставляет собственный механизм локализации сообщений журнала. В таком случаеLoggerFinderможет возвращать регистратор, напрямую использующий механизм, предоставляемый этой системой. - Параметры:
-
name— имя регистратора. -
bundle— пакет ресурсов; может иметь значениеnull. -
module— модуль, для которого запрашивается регистратор. - Возвращает:
- экземпляр
Logger, который будет использовать предоставленный пакет ресурсов для локализации сообщений. - Вызывает исключение:
-
NullPointerException— еслиnameимеет значениеnullилиmoduleимеет значениеnull.
getLoggerFinder
public static System.LoggerFinder getLoggerFinder()
LoggerFinder. В Java Runtime существует один-единственный экземпляр LoggerFinder для всей системы. Сведения о том, как обнаруживается и загружается реализация LoggerFinder, см. в спецификации класса.- Возвращает:
- экземпляр
LoggerFinder.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.