Класс 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.
- <имя-обработчика>.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(Handler target,
int size,
Level pushLevel) Создать |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
close() Закрыть |
void |
flush() Вызывает сброс в целевом |
Level |
getPushLevel() Получить |
boolean |
isLoggable(LogRecord record) Проверить, будет ли этот |
void |
publish(LogRecord record) Хранить |
void |
push() Отправить любой буферизованный вывод в целевой |
void |
setPushLevel(Level newLevel) Установить |
Методы, унаследованные от класса java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание конструкторов
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- описание события журнала. Нулевая запись игнорируется и не публикуется
push
public void push()
Отправить любой буферизованный вывод в целевой Handler.
Затем буфер очищается.
flush
public void flush()
Вызывает сброс в целевом Handler.
Обратите внимание, что текущее содержимое буфера MemoryHandler не записывается. Для этого требуется операция "push".
close
public void close()
throws SecurityException Закрыть Handler и освободить все связанные ресурсы. Это также закроет целевой Handler.
- Унаследовано от:
-
closeв классеHandler - Исключения:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетLoggingPermission("control").
setPushLevel
public void setPushLevel(Level newLevel)
throws SecurityException Установить pushLevel. После копирования LogRecord в наш внутренний буфер, если его уровень больше или равен pushLevel, вызывается push.
- Параметры:
-
newLevel- новое значениеpushLevel - Исключения:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нетLoggingPermission("control").
getPushLevel
public Level getPushLevel()
Получить pushLevel.
- Возвращает:
- значение
pushLevel
isLoggable
public boolean isLoggable(LogRecord record)
Проверить, будет ли этот Handler фактически записывать заданный LogRecord в свой внутренний буфер.
Этот метод проверяет, соответствует ли LogRecord нужному уровню и удовлетворяет ли он любым Filter. Однако он не проверяет, приведет ли LogRecord к "отправке" содержимого буфера. Он вернет false, если LogRecord равно null.
- Переопределяет:
-
isLoggableв классеHandler - Параметры:
-
record- запись журнала - Возвращает:
- true, если запись журнала будет записана.
© 1993, 2020, 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.