Spec-Zone.ru › OpenJDK 21

Класс System.LoggerFinder

java.lang.Object
java.lang.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.

Кроме того, при наличии менеджера безопасности, предоставляемые системам классы логгеры не должны напрямую настраиваться через бэкенд логирования без соответствующих разрешений. Поставщик конкретной реализации LoggerFinder отвечает за обеспечение того, что эти логгеры не будут настраиваться ненадёжным кодом без проверки соответствующих разрешений, поскольку настройка таких логгеров обычно влияет на все приложения в рамках одного Java Runtime.

Уровни сообщений и отображение на уровни бэкенда

Logger finder отвечает за отображение уровня System.Logger.Level на уровень, поддерживаемый используемым им бэкендом системы логирования.
По умолчанию LoggerFinder, использующий java.util.logging в качестве бэкенда, отображает уровни System.Logger на уровни java.util.logging соответствующей важности, как описано в Logger.Level.

С тех пор:
9
См. также:
  • System
  • System.Logger

Краткое описание конструкторов

LoggerFinder()
Модификатор Конструктор Описание
protected
Создаёт новый экземпляр LoggerFinder.

Краткое описание методов

Модификатор и тип Метод Описание
System.Logger getLocalizedLogger(String name, ResourceBundle bundle, Module module)
Возвращает локализованный экземпляр Logger для заданного module.
abstract System.Logger getLogger(String name, Module module)
Возвращает экземпляр Logger для заданного module.
static System.LoggerFinder getLoggerFinder()
Возвращает экземпляр LoggerFinder.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

LoggerFinder

protected LoggerFinder()
Создаёт новый экземпляр LoggerFinder.
Примечание об имплементации:
Рекомендуется, чтобы имплементация сервиса LoggerFinder не выполняла никакой ресурсоёмкой инициализации в своём конструкторе, чтобы избежать возможных рисков тупиков или циклов загрузки классов во время создания поставщика сервиса.
Исключения:
SecurityException - если присутствует менеджер безопасности, и его метод checkPermission не разрешает RuntimePermission("loggerFinder").

Подробное описание методов

getLogger

public abstract System.Logger getLogger(String name, Module module)
Возвращает экземпляр Logger для заданного module.
Параметры:
name - имя логгера.
module - модуль, для которого запрашивается логгер.
Возвращает:
a logger подходящий для использования в заданном модуле.
Исключения:
NullPointerException - если name равен null или module равен null.
SecurityException - если присутствует менеджер безопасности, и его метод checkPermission не разрешает RuntimePermission("loggerFinder").

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.
SecurityException - если присутствует менеджер безопасности, и его метод checkPermission не разрешает RuntimePermission("loggerFinder").

getLoggerFinder

public static System.LoggerFinder getLoggerFinder()
Возвращает экземпляр LoggerFinder. В среде выполнения Java имеется один единственный глобальный экземпляр LoggerFinder. См. спецификацию класса, чтобы узнать, как распознаётся и загружается имплементация LoggerFinder.
Возвращает:
экземпляр LoggerFinder.
Исключения:
SecurityException - если присутствует менеджер безопасности, и его метод checkPermission не разрешает RuntimePermission("loggerFinder").

© 1993, 2023, 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/21/docs/api/java.base/java/lang/System.LoggerFinder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API