Spec-Zone.ru › OpenJDK 27

Класс MemoryHandler

java.lang.Object
java.util.logging.Handler
java.util.logging.MemoryHandler
public class MemoryHandler extends Handler
Handler, который буферизует запросы в кольцевом буфере в памяти.

Обычно этот Handler просто сохраняет поступающие LogRecords в буфере памяти и отбрасывает более ранние записи. Такая буферизация обходится очень дешево и позволяет избежать затрат на форматирование. При определенных условиях срабатывания MemoryHandler отправляет содержимое текущего буфера целевому Handler, который обычно публикует его во внешнюю систему.

Существует три основных способа инициировать отправку содержимого буфера:

  • Поступивший LogRecord имеет тип выше заранее заданного уровня — pushLevel.
  • Внешний класс явно вызывает метод push.
  • Подкласс переопределяет метод log, проверяет каждую поступающую LogRecord и вызывает push, если запись соответствует некоторым заданным критериям.

Конфигурация: По умолчанию каждый MemoryHandler инициализируется с использованием следующих свойств конфигурации LogManager, где <handler-name> обозначает полное имя класса обработчика. Если свойства не заданы (или имеют недопустимые значения), используются указанные значения по умолчанию. Если значение по умолчанию не определено, возникает RuntimeException.

  • <handler-name>.level задает уровень для Handler (по умолчанию — Level.ALL).
  • <handler-name>.filter задает имя класса Filter (по умолчанию Filter не используется).
  • <handler-name>.size задает размер буфера (по умолчанию — 1000).
  • <handler-name>.push задает pushLevel (по умолчанию — level.SEVERE).
  • <handler-name>.target задает имя класса целевого Handler . (Значение по умолчанию отсутствует.)

Например, свойства для MemoryHandler будут следующими:

  • java.util.logging.MemoryHandler.level=INFO
  • java.util.logging.MemoryHandler.formatter=java.util.logging.SimpleFormatter

Для пользовательского обработчика, например com.foo.MyHandler, свойства будут следующими:

  • com.foo.MyHandler.level=INFO
  • com.foo.MyHandler.formatter=java.util.logging.SimpleFormatter
Начиная с версии:
1.4

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

Конструктор Описание
MemoryHandler()
Создает MemoryHandler и настраивает его на основе свойств конфигурации LogManager.
MemoryHandler(Handler target, int size, Level pushLevel)
Создает MemoryHandler.

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

Модификатор и тип Метод Описание
void close()
Закрывает Handler и освобождает все связанные ресурсы.
void flush()
Выполняет сброс целевого Handler.
Level getPushLevel()
Возвращает pushLevel.
boolean isLoggable(LogRecord record)
Проверяет, будет ли этот Handler фактически записывать заданную LogRecord во внутренний буфер.
void publish(LogRecord record)
Сохраняет LogRecord во внутреннем буфере.
void push()
Отправляет все буферизованные данные целевому Handler.
void setPushLevel(Level newLevel)
Задает pushLevel.

Методы, объявленные в классе Handler

getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
Модификатор и тип Метод Описание
String getEncoding()
Возвращает кодировку символов для этого Handler.
ErrorManager getErrorManager()
Возвращает ErrorManager этого Handler.
Filter getFilter()
Возвращает текущий Filter для этого Handler.
Formatter getFormatter()
Возвращает Formatter для этого Handler.
Level getLevel()
Возвращает уровень журналирования, определяющий, какие сообщения будут записываться этим Handler.
protected void reportError(String msg, Exception ex, int code)
Защищенный вспомогательный метод для передачи ошибки в ErrorManager этого Handler.
void setEncoding(String encoding)
Задает кодировку символов, используемую этим Handler.
void setErrorManager(ErrorManager em)
Задает ErrorManager для этого Handler.
void setFilter(Filter newFilter)
Задает Filter для управления выводом этого Handler.
void setFormatter(Formatter newFormatter)
Задает Formatter.
void setLevel(Level newLevel)
Задает уровень журналирования, определяющий, сообщения каких уровней будут записываться этим Handler.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
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(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

MemoryHandler

public MemoryHandler()
Создает MemoryHandler и настраивает его на основе свойств конфигурации LogManager.

MemoryHandler

public MemoryHandler(Handler target, int size, Level pushLevel)
Создает MemoryHandler.

MemoryHandler настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что используются заданный аргумент pushLevel и аргумент размера буфера.

Параметры:
target — обработчик, которому следует передавать вывод.
size — количество записей журнала для буферизации (должно быть больше нуля)
pushLevel — уровень сообщений, при котором выполняется отправка
Исключения:
IllegalArgumentException — если size is <= 0

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

publish

public void publish(LogRecord record)
Сохраняет LogRecord во внутреннем буфере.

Если имеется Filter, вызывается его метод isLoggable, чтобы проверить, можно ли записывать указанную запись журнала. Если нельзя, метод возвращает управление. В противном случае указанная запись копируется во внутренний кольцевой буфер. Затем свойство уровня записи сравнивается с pushLevel. Если указанный уровень больше или равен pushLevel, вызывается push для записи всех буферизованных записей в целевой выходной Handler.

Определен в:
publish в классе Handler
Параметры:
record — описание события журнала. Запись со значением null без уведомления игнорируется и не публикуется

push

public void push()
Отправляет все буферизованные данные целевому Handler.

После этого буфер очищается.

flush

public void flush()
Выполняет сброс целевого Handler.

Обратите внимание: текущее содержимое буфера MemoryHandler не выводится. Для этого требуется вызвать «push».

Определен в:
flush в классе Handler

close

public void close()
Закрывает Handler и освобождает все связанные ресурсы. При этом также закрывается целевой Handler.
Определен в:
close в классе Handler

setPushLevel

public void setPushLevel(Level newLevel)
Задает pushLevel. После копирования LogRecord во внутренний буфер, если ее уровень больше или равен pushLevel, будет вызван push.
Параметры:
newLevel — новое значение pushLevel

getPushLevel

public Level getPushLevel()
Возвращает pushLevel.
Возвращает:
значение pushLevel

isLoggable

public boolean isLoggable(LogRecord record)
Проверяет, будет ли этот Handler фактически записывать заданную LogRecord во внутренний буфер.

Этот метод проверяет, имеет ли LogRecord подходящий уровень и удовлетворяет ли она каким-либо Filter. Однако он не проверяет, приведет ли LogRecord к отправке содержимого буфера. Метод вернет false, если LogRecord имеет значение null.

Переопределяет:
isLoggable в классе Handler
Параметры:
record — LogRecord (может иметь значение null).
Возвращает:
true, если LogRecord будет записана.

Сообщить об ошибке или предложить улучшение
Для получения дополнительных справочных материалов по API и документации для разработчиков см. документацию Java SE, содержащую более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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