Класс MemoryHandler
public class MemoryHandler extends Handler
Handler, которая буферизует запросы в циклическом буфере в памяти. Обычно эта Handler просто сохраняет входящие LogRecords в свой буфер памяти и отбрасывает более ранние записи. Такая буферизация очень дешёвая и избегает затрат на форматирование. В определённых условиях эта MemoryHandler выведет содержимое текущего буфера в целевой Handler, который, как правило, опубликует их во внешнем мире.
Существует три основных модели для запуска вывода буфера:
- Входящее
LogRecordимеет тип, превышающий предопределённый уровень,pushLevel. - Внешний класс явно вызывает метод
push. - Подкласс переопределяет метод
logи сканирует каждое входящееLogRecord, вызываяpush, если запись соответствует определённым критериям.
Настройка: По умолчанию каждый MemoryHandler инициализируется с помощью следующих свойств конфигурации LogManager, где <handler-name> ссылается на полное имя класса обработчика. Если свойства не определены (или имеют недопустимые значения), используются указанные значения по умолчанию. Если значение по умолчанию не определено, выбрасывается исключение RuntimeException.
- <имя-обработчика>.level указывает уровень для
Handler(по умолчаниюLevel.ALL). - <имя-обработчика>.filter указывает имя класса
Filterдля использования (по умолчанию безFilter). - <имя-обработчика>.size определяет размер буфера (по умолчанию 1000).
- <имя-обработчика>.push определяет
pushLevel(по умолчаниюlevel.SEVERE). - <имя-обработчика>.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
- Since:
- 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. |
Методы, объявленные в классе java.util.logging.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 и размера буфера.
- Parameters:
-
target- обработчик, в который нужно публиковать вывод. -
size- количество записей журнала для буферизации (должно быть больше нуля) -
pushLevel- уровень сообщения для вывода - Throws:
-
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.- Parameters:
-
newLevel- новое значениеpushLevel
getPushLevel
public Level getPushLevel()
pushLevel.- Returns:
- значение
pushLevel
isLoggable
public boolean isLoggable(LogRecord record)
Handler фактически регистрировать данную LogRecord в свой внутренний буфер. Этот метод проверяет, имеет ли LogRecord соответствующий уровень и удовлетворяет ли он каким-либо Filter. Однако он не проверяет, приведет ли LogRecord к "push" содержимого буфера. Он вернёт false, если LogRecord равен null.
- Overrides:
-
isLoggableв классеHandler - Parameters:
-
record- запись журнала (может быть null). - Returns:
- 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://download.java.net/java/early_access/jdk24/docs/api/java.logging/java/util/logging/MemoryHandler.html