Класс 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. |
Подробное описание конструкторов
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/System.LoggerFinder.html