Класс System.LoggerFinder
- Вложенный класс:
System
public abstract static class System.LoggerFinder extends Object
LoggerFinder отвечает за создание, управление и конфигурацию логгеров для используемой подчинённой платформы. Logger finder — это конкретная реализация этого класса, имеющая конструктор без аргументов и реализующая абстрактные методы, определённые этим классом. Логгеры, возвращаемые с помощью logger finder, способны передавать сообщения об ошибках в бэкенд логгирования, поддерживаемый данным провайдером. В данном вызове Java Runtime поддерживается единственный системный экземпляр LoggerFinder, который загружается следующим образом: - Сначала он находит любого пользовательского провайдера
LoggerFinder, используя средствоServiceLoaderс системным загрузчиком классов. - Если ни один провайдер
LoggerFinderне найден, будет использована системная реализация по умолчаниюLoggerFinder.
Приложение может заменить бэкенд логгирования даже когда модуль java.logging присутствует, просто предоставив и объявив реализацию сервиса System.LoggerFinder.
Реализация по умолчанию
Системная реализация по умолчанию LoggerFinder использует java.util.logging в качестве бэкенд-фреймворка, когда присутствует модуль java.logging. Она возвращает экземпляр логгера logger, который будет передавать сообщения об ошибках в 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.
Уровни сообщений и сопоставление с уровнями бэкенда
Logger finder отвечает за сопоставление уровня
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- модуль, для которого запрашивается логгер. - Возвращает:
- a
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/System.LoggerFinder.html