Класс LogManager
public class LogManager extends Object
Этот объект LogManager:
- Управляет иерархическим пространством имен объектов Logger. Все именованные объекты Logger хранятся в этом пространстве имен.
- Управляет набором свойств управления журналированием. Это простые пары «ключ-значение», которые обработчики и другие объекты журналирования могут использовать для настройки.
Глобальный объект LogManager можно получить с помощью LogManager.getLogManager(). Объект LogManager создается во время инициализации класса и впоследствии не может быть изменен.
При запуске класс LogManager определяется с помощью системного свойства java.util.logging.manager.
Конфигурация LogManager
LogManager инициализирует конфигурацию журналирования с помощью методаreadConfiguration() во время своей инициализации. По умолчанию используется конфигурация LogManager. Конфигурация журналирования, считываемая LogManager, должна иметь формат файла свойств. LogManager определяет два необязательных системных свойства, позволяющих управлять начальной конфигурацией, как указано в методе readConfiguration():
-
java.util.logging.config.class -
java.util.logging.config.file
Эти два системных свойства можно указать в командной строке команды "java" или передать как определения системных свойств в JNI_CreateJavaVM.
Свойства регистраторов и обработчиков будут иметь имена, начинающиеся с имени обработчика или регистратора, разделенного точками.
Глобальные свойства журналирования могут включать:
- Свойство "handlers". Оно определяет список имен классов, разделенных пробелами или запятыми, для классов обработчиков, которые следует загрузить и зарегистрировать в качестве обработчиков корневого Logger (Logger с именем ""). Каждое имя класса должно соответствовать классу Handler с конструктором по умолчанию. Обратите внимание, что эти обработчики могут создаваться по требованию, при первом использовании.
- Свойство "<logger>.handlers". Оно определяет список имен классов, разделенных пробелами или запятыми, для классов обработчиков, которые следует загрузить и зарегистрировать в качестве обработчиков указанного регистратора. Каждое имя класса должно соответствовать классу Handler с конструктором по умолчанию. Обратите внимание, что эти обработчики могут создаваться по требованию, при первом использовании.
- Свойство "<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 |
Обновляет конфигурацию журналирования. |
Подробное описание полей
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)
Обратите внимание: поскольку недоверенный код может создавать регистраторы с произвольными именами, не следует полагаться на этот метод при поиске регистраторов для ведения журнала событий, связанных с безопасностью. Важно также учитывать, что объект Logger, связанный со строкой name, может быть собран сборщиком мусора в любой момент, если на Logger нет сильной ссылки. Вызывающий этот метод код должен проверять возвращаемое значение на null, чтобы корректно обрабатывать ситуацию, когда объект Logger был собран сборщиком мусора.
- Параметры:
-
name— имя регистратора - Возвращает:
- соответствующий регистратор или null, если он не найден
getLoggerNames
public Enumeration<String> getLoggerNames()
Примечание: по мере загрузки новых классов регистраторы могут добавляться динамически. Этот метод сообщает только о регистраторах, зарегистрированных на данный момент. Важно также учитывать, что этот метод возвращает только имя объекта Logger, а не сильную ссылку на сам объект Logger. Возвращённая строка никак не препятствует сборке объекта Logger сборщиком мусора. В частности, если передать возвращённое имя в LogManager.getLogger(), вызывающий код должен проверить возвращаемое значение LogManager.getLogger() на null, чтобы корректно обработать ситуацию, когда объект Logger был собран сборщиком мусора после возврата его имени этим методом.
- Возвращает:
- перечисление строк с именами регистраторов
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).
- Заменить все свойства новой конфигурацией, кроме свойства обработчиков, задающего обработчики регистратора, который не является корневым:
(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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.logging/java/util/logging/LogManager.html