Класс LogManager
public class LogManager extends Object
Этот объект LogManager:
- Управляет иерархическим пространством имён объектов Logger. Все именованные объекты Logger хранятся в этом пространстве имён.
- Управляет набором свойств управления журналированием. Это простые пары «ключ-значение», которые Handlers и другие объекты журналирования могут использовать для настройки.
Глобальный объект LogManager можно получить с помощью LogManager.getLogManager(). Объект LogManager создаётся при инициализации класса и впоследствии не может быть изменён.
При запуске класс LogManager определяется с помощью системного свойства java.util.logging.manager.
Конфигурация LogManager
LogManager инициализирует конфигурацию журналирования с помощью методаreadConfiguration() при инициализации LogManager. По умолчанию используется конфигурация LogManager. Конфигурация журналирования, считываемая LogManager, должна иметь формат файла свойств. LogManager определяет два необязательных системных свойства, позволяющих управлять начальной конфигурацией, как указано в методе readConfiguration():
-
java.util.logging.config.class -
java.util.logging.config.file
Эти два системных свойства можно указать в командной строке команды "java" или передать как определения системных свойств в JNI_CreateJavaVM.
Свойства для логгеров и Handlers будут иметь имена, начинающиеся с имени обработчика или логгера, компоненты которого разделены точками.
Глобальные свойства журналирования могут включать:
- Свойство "handlers". Оно задаёт разделённый пробелами или запятыми список имён классов обработчиков, которые нужно загрузить и зарегистрировать как обработчики корневого Logger (Logger с именем ""). Каждое имя класса должно соответствовать классу Handler с конструктором по умолчанию. Обратите внимание, что эти Handlers могут создаваться отложенно, при первом использовании.
- Свойство "<logger>.handlers". Оно задаёт разделённый пробелами или запятыми список имён классов обработчиков, которые нужно загрузить и зарегистрировать как обработчики указанного логгера. Каждое имя класса должно соответствовать классу Handler с конструктором по умолчанию. Обратите внимание, что эти Handlers могут создаваться отложенно, при первом использовании.
- Свойство "<logger>.handlers.ensureCloseOnReset". Оно задаёт логическое значение. Если "<logger>.handlers" не задано или имеет пустое значение, это свойство игнорируется. В противном случае по умолчанию оно равно
true. Если значение равноtrue, гарантируется, что связанные с логгером обработчики будут закрыты при вызове reset() и при завершении работы. Это поведение можно отключить, явно задав в конфигурации "<logger>.handlers.ensureCloseOnReset=false". Обратите внимание, что отключение этого свойства создаёт риск утечки ресурсов: логгер может быть собран сборщиком мусора до вызоваreset(), что помешает закрыть его обработчики при вызовеreset(). В этом случае приложение должно самостоятельно обеспечить закрытие обработчиков до того, как логгер будет собран сборщиком мусора. - Свойство "<logger>.useParentHandlers". Оно задаёт логическое значение. По умолчанию каждый логгер, помимо обработки сообщения журналирования самостоятельно, вызывает родительский логгер; часто в результате сообщения также обрабатываются корневым логгером. Если задать для этого свойства значение false, для данного логгера необходимо настроить Handler, иначе сообщения журналирования не будут доставляться.
- Свойство "config". Это свойство предназначено для выполнения произвольного кода конфигурации. Оно задаёт разделённый пробелами или запятыми список имён классов. Для каждого указанного класса будет создан новый экземпляр. Конструктор каждого класса по умолчанию может выполнять произвольный код для изменения конфигурации журналирования, например задавать уровни логгеров, добавлять обработчики, фильтры и т. д.
Обратите внимание, что при конфигурировании LogManager все загружаемые классы сначала ищутся в системном пути классов, а затем — в пользовательском. Это относится к классу LogManager, классам конфигурации и классам обработчиков.
Логгеры организованы в иерархию имён на основе их имён, компоненты которых разделены точками. Так, "a.b.c" является дочерним логгером для "a.b", а "a.b1" и "a.b2" находятся на одном уровне.
Предполагается, что все свойства, имена которых заканчиваются на ".level", задают уровни журналирования для логгеров. Так, "foo.level" задаёт уровень журналирования для логгера с именем "foo" и (рекурсивно) для всех его дочерних логгеров в иерархии имён. Уровни журналирования применяются в том порядке, в котором они определены в файле свойств. Поэтому настройки уровня для дочерних узлов дерева должны следовать за настройками их родителей. Имя свойства ".level" можно использовать для задания уровня корня дерева.
Все методы объекта LogManager являются потокобезопасными.
- Начиная с:
- 1.4
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
LOGGING_MXBEAN_NAME |
Строковое представление ObjectName для интерфейса управления службой журналирования. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Защищённый конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
LogManager |
addConfigurationListener |
Добавляет слушателя конфигурации, который вызывается каждый раз при чтении конфигурации журналирования. |
boolean |
addLogger |
Добавляет именованный логгер. |
void |
checkAccess() |
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии. Изначально этот метод проверял, доверен ли текущий контекст для изменения конфигурации журналирования. |
Logger |
getLogger |
Метод поиска именованного логгера. |
Enumeration |
getLoggerNames() |
Возвращает перечисление известных имён логгеров. |
static LoggingMXBean |
getLoggingMXBean() |
Устарел. java.util.logging.LoggingMXBean устарел; вместо него следует использовать java.lang.management.PlatformLoggingMXBean. |
static LogManager |
getLogManager() |
Возвращает глобальный объект LogManager. |
String |
getProperty |
Возвращает значение свойства журналирования. |
void |
readConfiguration() |
Считывает и инициализирует конфигурацию журналирования. |
void |
readConfiguration |
Считывает и инициализирует конфигурацию журналирования из указанного входного потока. |
void |
removeConfigurationListener |
Удаляет ранее зарегистрированный слушатель конфигурации. |
void |
reset() |
Сбрасывает конфигурацию журналирования. |
void |
updateConfiguration |
Обновляет конфигурацию журналирования. |
void |
updateConfiguration |
Обновляет конфигурацию журналирования. |
Методы, объявленные в классе 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, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
LOGGING_MXBEAN_NAME
public static final String LOGGING_MXBEAN_NAME
ObjectName для интерфейса управления средством ведения журнала.- Начиная с:
- 1.5
- См. также:
Подробное описание конструкторов
LogManager
protected LogManager()
Подробное описание методов
getLogManager
public static LogManager getLogManager()
- Возвращает:
- глобальный объект LogManager
addLogger
public boolean addLogger(Logger logger)
Фабричные методы Logger вызывают этот метод для регистрации каждого вновь созданного Logger.
Приложению следует хранить собственную ссылку на объект Logger, чтобы избежать его сборки мусора. LogManager может хранить только слабую ссылку.
- Параметры:
-
logger— новый регистратор. - Возвращает:
- true, если регистратор-аргумент успешно зарегистрирован; false, если регистратор с таким именем уже существует.
- Выбрасывает:
-
NullPointerException— если имя регистратора равно null.
getLogger
public Logger getLogger(String name)
Обратите внимание: поскольку недоверенный код может создавать регистраторы с произвольными именами, не следует полагаться на этот метод при поиске регистраторов для ведения журналов, связанных с безопасностью. Также важно учитывать, что связанный со строкой name регистратор может быть собран сборщиком мусора в любой момент, если на него нет сильной ссылки. Вызывающий этот метод код должен проверить, не равен ли возвращаемый результат null, чтобы корректно обработать случай, когда регистратор был собран сборщиком мусора.
- Параметры:
-
name— имя регистратора - Возвращает:
- соответствующий регистратор или null, если он не найден
getLoggerNames
public Enumeration<String> getLoggerNames()
Примечание. Регистраторы могут добавляться динамически по мере загрузки новых классов. Этот метод возвращает сведения только о регистраторах, зарегистрированных в данный момент. Также важно учитывать, что этот метод возвращает только имя Logger, а не сильную ссылку на сам Logger. Возвращённая строка никак не препятствует сборке Logger сборщиком мусора. В частности, если возвращённое имя передаётся в LogManager.getLogger(), вызывающий код должен проверить, не равен ли null результат LogManager.getLogger(), чтобы корректно обработать случай, когда регистратор был собран сборщиком мусора после того, как этот метод вернул его имя.
- Возвращает:
- перечисление строк с именами регистраторов
readConfiguration
public void readConfiguration() throws IOException
Если задано системное свойство "java.util.logging.config.class", его значение рассматривается как имя класса. Указанный класс будет загружен, будет создан экземпляр, а конструктор этого экземпляра отвечает за считывание исходной конфигурации. (Этот объект может использовать другие системные свойства для управления своей конфигурацией.) Альтернативный класс конфигурации может использовать readConfiguration(InputStream) для определения свойств в LogManager.
Если системное свойство "java.util.logging.config.class" не задано, этот метод считывает исходную конфигурацию из файла свойств и вызывает метод readConfiguration(InputStream) для инициализации конфигурации. Системное свойство "java.util.logging.config.file" можно использовать для указания файла свойств, который будет считан как исходная конфигурация; если оно не задано, используется конфигурация LogManager по умолчанию. Обычно конфигурация по умолчанию загружается из файла свойств "conf/logging.properties" в каталоге установки Java.
После считывания свойств будут вызваны все зарегистрированные слушатели конфигурации.
- Примечание к API:
- Этот метод
readConfigurationследует использовать только для инициализации конфигурации во время инициализации LogManager или вместе со свойством "java.util.logging.config.class". Если этот метод вызывается после создания регистраторов и системное свойство "java.util.logging.config.class" не задано, все существующие регистраторы будут сброшены. Затем всем существующим регистраторам, для которых в новом потоке конфигурации указано свойство уровня, будет установлен заданный уровень ведения журнала.Для корректного обновления конфигурации ведения журнала используйте методы
updateConfiguration(java.util.function.Function)илиupdateConfiguration(java.io.InputStream, java.util.function.Function). - Выбрасывает:
-
IOException— если при считывании конфигурации возникли проблемы ввода-вывода.
reset
public void reset()
Для всех именованных регистраторов операция сброса удаляет и закрывает все обработчики и (кроме корневого регистратора) устанавливает уровень в null. Уровень корневого регистратора устанавливается в Level.INFO.
- Примечание к API:
- Вызов этого метода также удаляет свойства LogManager. Для корректного обновления до новой конфигурации можно использовать метод
updateConfiguration(Function)илиupdateConfiguration(InputStream, Function).
readConfiguration
public void readConfiguration(InputStream ins) throws IOException
После считывания свойств будут вызваны все зарегистрированные слушатели конфигурации.
- Примечание к API:
- Этот метод
readConfigurationследует использовать только для инициализации конфигурации во время инициализации LogManager или вместе со свойством "java.util.logging.config.class". Если этот метод вызывается после создания регистраторов, все существующие регистраторы будут сброшены. Затем всем существующим регистраторам, для которых в указанном входном потоке задано свойство уровня, будет установлен заданный уровень ведения журнала.Для корректного обновления конфигурации ведения журнала используйте метод
updateConfiguration(java.util.function.Function)илиupdateConfiguration(java.io.InputStream, java.util.function.Function). - Параметры:
-
ins— поток, из которого считываются свойства - Выбрасывает:
-
IOException— если при чтении из потока возникли проблемы или указанный поток не имеет формата файла свойств.
updateConfiguration
public void updateConfiguration(Function<String, BiFunction<String,String,String>> mapper) throws IOException
Если задано системное свойство "java.util.logging.config.file", его значение указывает файл свойств, который следует считать как новую конфигурацию. В противном случае используется конфигурация LogManager по умолчанию.
Обычно конфигурация по умолчанию загружается из файла свойств "conf/logging.properties" в каталоге установки Java.
Этот метод считывает новую конфигурацию и вызывает метод updateConfiguration(ins, mapper) для обновления конфигурации.
- Примечание к API:
- Этот метод обновляет конфигурацию ведения журнала, считывая файл свойств, и игнорирует системное свойство "java.util.logging.config.class". Свойство "java.util.logging.config.class" используется только методом
readConfiguration()для загрузки пользовательского класса конфигурации в качестве исходной конфигурации. - Параметры:
-
mapper— функциональный интерфейс, принимающий ключ конфигурации k и возвращающий функцию f(o,n), результат которой будет применён к итоговой конфигурации. Функция f может вернутьnull, чтобы указать, что свойство k не будет добавлено в итоговую конфигурацию.
Еслиmapperравноnull, предполагается значение(k) -> ((o, n) -> n).
Для каждого k сопоставленная функция f вызывается со значением, связанным с k в старой конфигурации (то есть o), и значением, связанным с k в новой конфигурации (то есть n).
Значениеnullдля o или n означает, что в соответствующей конфигурации для k не было задано значения. - Выбрасывает:
-
NullPointerException— если при вызовеmapperвозвращает функциюnull. -
IOException— если при чтении файла конфигурации ведения журнала возникли проблемы. - Начиная с:
- 9
- См. также:
updateConfiguration
public void updateConfiguration(InputStream ins, Function<String, BiFunction<String,String,String>> mapper) throws IOException
Для каждого ключа конфигурации в существующей конфигурации и конфигурации, заданной входным потоком, вызывается указанная функция mapper для преобразования ключа конфигурации в функцию f(o,n). Она принимает старое и новое значения и возвращает значение, которое следует применить в итоговой конфигурации, как указано в таблице ниже.
Пусть k — ключ конфигурации в старой или новой конфигурации, o — старое значение (то есть значение, связанное с k в старой конфигурации), n — новое значение (то есть значение, связанное с k в новой конфигурации), а f — функция, возвращаемая mapper.apply(k): тогда v = f(o,n) — итоговое значение. Если v не равно null, в итоговую конфигурацию будет добавлено свойство k со значением v. В противном случае оно будет пропущено.
Функции f может быть передано значение null, указывающее, что в соответствующей конфигурации нет ключа k. Функция f может вернуть null, указывая, что в итоговой конфигурации значение для k отсутствует.
Если mapper равно null, то v будет установлено в n.
Свойства LogManager обновляются итоговыми значениями из итоговой конфигурации.
После успешного обновления конфигурации будут вызваны зарегистрированные слушатели конфигурации.
| Свойство | Результирующее поведение |
|---|---|
<logger>.level |
|
<logger>.useParentHandlers |
|
<logger>.handlers |
|
<handler-name>.* |
|
config и любое другое свойство |
|
Примеры функций преобразования:
- Заменить все свойства ведения журнала новой конфигурацией:
(k) -> ((o, n) -> n):
это эквивалентно передаче параметраmapperсо значением null. - Объединить новую и старую конфигурации, используя новое значение, если k существует в новой конфигурации:
(k) -> ((o, n) -> n == null ? o : n):
как при объединении двух коллекций следующим образом:result.putAll(oldc); result.putAll(newc).
- Объединить новую и старую конфигурации, используя старое значение, если k существует в старой конфигурации:
(k) -> ((o, n) -> o == null ? n : o):
как при объединении двух коллекций следующим образом:result.putAll(newc); result.putAll(oldc).
- Заменить все свойства новой конфигурацией, кроме свойства обработчика, которое задаёт обработчики Logger, не являющегося корневым регистратором:
(k) -> k.endsWith(".handlers")? ((o, n) -> (o == null ? n : o)): ((o, n) -> n)
Для полной повторной инициализации конфигурации приложение может сначала вызвать reset, чтобы полностью удалить старую конфигурацию, а затем вызвать updateConfiguration для инициализации новой конфигурации.
- Параметры:
-
ins— поток для считывания свойств -
mapper— функциональный интерфейс, принимающий ключ конфигурации k и возвращающий функцию f(o,n), результат которой будет применён к итоговой конфигурации. Функция f может вернутьnull, чтобы указать, что свойство k не будет добавлено в итоговую конфигурацию.
Еслиmapperравноnull, предполагается значение(k) -> ((o, n) -> n).
Для каждого k сопоставленная функция f вызывается со значением, связанным с k в старой конфигурации (то есть o), и значением, связанным с k в новой конфигурации (то есть n).
Значениеnullдля o или n означает, что в соответствующей конфигурации для k не было задано значения. - Выбрасывает:
-
NullPointerException— еслиinsравно null или если при вызовеmapperвозвращает функцию null. -
IOException— если при чтении из потока возникли проблемы или указанный поток не имеет формата файла свойств. - Начиная с:
- 9
getProperty
public String getProperty(String name)
- Параметры:
-
name— имя свойства - Возвращает:
- значение свойства
checkAccess
@Deprecated(since="17", forRemoval=true) public void checkAccess()
getLoggingMXBean
@Deprecated(since="9") public static LoggingMXBean getLoggingMXBean()
java.util.logging.LoggingMXBean устарел и заменён на java.lang.management.PlatformLoggingMXBean. Вместо него используйте ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class).LoggingMXBean для управления регистраторами.- Возвращает:
- объект
LoggingMXBean. - Начиная с:
- 1.5
- См. также:
addConfigurationListener
public LogManager addConfigurationListener(Runnable listener)
Слушатель вызывается с привилегиями, ограниченными контекстом вызова этого метода. Порядок вызова слушателей не определён.
Рекомендуется, чтобы слушатели не выбрасывали ошибки или исключения. Если выполнение слушателя завершается из-за неперехваченной ошибки или исключения, первое исключение будет передано вызывающему методу readConfiguration() (или readConfiguration(java.io.InputStream)) после вызова всех слушателей.
- Примечание по реализации:
- Если выполнение нескольких слушателей завершается из-за неперехваченной ошибки или исключения, реализация может записать дополнительные ошибки или исключения как подавленные исключения.
- Параметры:
-
listener— слушатель конфигурации, который будет вызван после изменения конфигурации. - Возвращает:
- этот LogManager.
- Выбрасывает:
-
NullPointerException— если слушатель равен null. - Начиная с:
- 9
removeConfigurationListener
public void removeConfigurationListener(Runnable listener)
- Параметры:
-
listener— удаляемый слушатель конфигурации. - Выбрасывает:
-
NullPointerException— если слушатель равен null. - Начиная с:
- 9
© 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.