Класс 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 |
Создает MemoryHandler. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает Handler и освобождает все связанные с ним ресурсы. |
void |
flush() |
Выполняет сброс целевого Handler. |
Level |
getPushLevel() |
Возвращает pushLevel. |
boolean |
isLoggable |
Проверяет, будет ли этот Handler действительно записывать заданную LogRecord во внутренний буфер. |
void |
publish |
Сохраняет LogRecord во внутреннем буфере. |
void |
push() |
Отправляет все буферизованные данные целевому Handler. |
void |
setPushLevel |
Задает pushLevel. |
Методы, объявленные в классе Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
Подробное описание конструкторов
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.
push
public void push()
Handler. После этого буфер очищается.
flush
close
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будет записана в журнал.
© 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/MemoryHandler.html