Класс FileHandler
public class FileHandler extends StreamHandler
Handler. Класс может записывать логи в указанный файл или в набор вращающихся файлов.
При достижении лимита размера файла, он закрывается, файл переименовывается, и открывается новый. Более старые файлы имеют номера, добавленные к имени файла (0, 1, 2 и т.д.).
По умолчанию буферизация включена в библиотеках ввода-вывода, но каждый записной объект лога сбрасывается при его завершении.
По умолчанию используется класс XMLFormatter для форматирования.
Конфигурация: Каждый FileHandler инициализируется по умолчанию с помощью следующих свойств конфигурации LogManager, где <handler-name> указывает полное имя класса обработчика. Если свойства не определены (или имеют недопустимые значения), используются указанные значения по умолчанию.
- <handler-name>.level указывает уровень лога по умолчанию для
Handler(по умолчаниюLevel.ALL). - <handler-name>.filter указывает имя класса
Filterдля использования (по умолчанию без фильтрацииFilter). - <handler-name>.formatter указывает имя класса
Formatterдля использования (по умолчаниюjava.util.logging.XMLFormatter) - <handler-name>.encoding - кодировка символов (по умолчанию - кодировка платформы).
- <handler-name>.limit указывает приблизительный максимальный размер записи в один файл (в байтах). Если значение равно нулю, то лимита нет. (По умолчанию - без лимита).
- <handler-name>.count указывает количество файлов для циклического использования (по умолчанию 1).
- <handler-name>.pattern указывает шаблон для создания имени файла. Подробности ниже. (По умолчанию "%h/java%u.log").
- <handler-name>.append указывает, следует ли добавлять данные в существующие файлы (по умолчанию false).
- <handler-name>.maxLocks указывает максимальное количество одновременных блокировок, удерживаемых FileHandler (по умолчанию 100).
Например, свойства для FileHandler будут следующими:
- java.util.logging.FileHandler.level=INFO
- java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
Для пользовательского обработчика, например com.foo.MyHandler, свойства будут:
- com.foo.MyHandler.level=INFO
- com.foo.MyHandler.formatter=java.util.logging.SimpleFormatter
Шаблон состоит из строки, содержащей следующие специальные компоненты, которые будут заменены во время выполнения:
- "/" разделитель пути
- "%t" системный временный каталог
- "%h" значение системной переменной "user.home"
- "%g" номер генерации для различения вращающихся логов
- "%u" уникальное число для разрешения конфликтов
- "%%" переводится в один символ процента "%"
Например, шаблон "%t/java%g.log" с количеством 2 обычно приведет к записи логов в Solaris в /var/tmp/java0.log и /var/tmp/java1.log, а в Windows 95 - в C:\TEMP\java0.log и C:\TEMP\java1.log.
Номера генераций следуют последовательности 0, 1, 2 и т.д.
Обычно поле "%u" устанавливается в 0. Однако, если FileHandler пытается открыть файл, а файл используется другой процесс, он увеличит поле уникального номера и повторит попытку. Это будет повторяться до тех пор, пока FileHandler не найдет имя файла, которое не используется в данный момент. Если есть конфликт, а поле "%u" не было указано, оно будет добавлено в конец имени файла после точки (после любого автоматически добавленного номера генерации).
Например, если три процесса пытаются вести логи в fred%u.%g.txt, они могут получить fred0.0.txt, fred1.0.txt, fred2.0.txt в качестве первых файлов в своих циклах вращения.
Обратите внимание, что использование уникальных идентификаторов для предотвращения конфликтов гарантировано работает надежно только при использовании локальной файловой системы.
- Since:
- 1.4
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
FileHandler() |
Создает обработчик по умолчанию FileHandler. |
FileHandler |
Инициализирует обработчик для записи в указанный файл. |
FileHandler |
Инициализирует обработчик для записи в указанный файл с опциональным добавлением. |
FileHandler |
Инициализирует обработчик для записи в набор файлов. |
FileHandler |
Инициализирует обработчик для записи в набор файлов с опциональным добавлением. |
FileHandler |
Инициализирует обработчик для записи в набор файлов с опциональным добавлением. |
Краткое описание методов
Методы, унаследованные от класса java.util.logging.StreamHandler
flush, isLoggable, setEncoding, setOutputStream
Методы, унаследованные от класса java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
Подробное описание конструкторов
FileHandler
public FileHandler() throws IOException, SecurityException
LogManager (или их значений по умолчанию).- Возбуждает:
-
IOException- если возникли проблемы ввода-вывода при открытии файлов. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control")). -
NullPointerException- если свойство pattern является пустой строкой.
FileHandler
public FileHandler(String pattern) throws IOException, SecurityException
FileHandler для записи в указанный файл. Обработчик настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что переданный аргумент pattern используется в качестве шаблона имени файла, предел файла установлен без ограничения, а количество файлов — на единицу.
Ограничений на количество данных для записи нет, поэтому используйте этот метод с осторожностью.
- Параметры:
-
pattern- имя выходного файла - Возбуждает:
-
IOException- если возникли проблемы ввода-вывода при открытии файлов. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control"). -
IllegalArgumentException- если pattern — пустая строка
FileHandler
public FileHandler(String pattern, boolean append) throws IOException, SecurityException
FileHandler для записи в указанный файл с опциональным добавлением. Обработчик настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что переданный аргумент pattern используется в качестве шаблона имени файла, предел файла установлен без ограничения, количество файлов — на единицу, а режим добавления — установленный аргумент append.
Ограничений на количество данных для записи нет, поэтому используйте этот метод с осторожностью.
- Параметры:
-
pattern- имя выходного файла -
append- указывает режим добавления - Возбуждает:
-
IOException- если возникли проблемы ввода-вывода при открытии файлов. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control"). -
IllegalArgumentException- если pattern — пустая строка
FileHandler
public FileHandler(String pattern, int limit, int count) throws IOException, SecurityException
FileHandler для записи в набор файлов. Когда (приблизительно) заданный предел достигнут в одном файле, откроется другой файл. Вывод будет циклически переключаться между набором файлов. Обработчик настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что переданный аргумент pattern используется в качестве шаблона имени файла, предел файла установлен в значение аргумента limit, а количество файлов — в значение аргумента count.
Значение count должно быть не меньше 1.
- Параметры:
-
pattern- шаблон для именования выходного файла -
limit- максимальное количество байтов для записи в любой один файл -
count- количество файлов для использования - Возбуждает:
-
IOException- если возникли проблемы ввода-вывода при открытии файлов. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control"). -
IllegalArgumentException- еслиlimit < 0, илиcount < 1. -
IllegalArgumentException- если pattern — пустая строка
FileHandler
public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException
FileHandler для записи в набор файлов с опциональным добавлением. Когда (приблизительно) заданный предел достигнут в одном файле, откроется другой файл. Вывод будет циклически переключаться между набором файлов. Обработчик настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что переданный аргумент pattern используется в качестве шаблона имени файла, предел файла установлен в значение аргумента limit, количество файлов — в значение аргумента count, и режим добавления — значение аргумента append.
Значение count должно быть не меньше 1.
- Параметры:
-
pattern- шаблон для именования выходного файла -
limit- максимальное количество байтов для записи в любой один файл -
count- количество файлов для использования -
append- указывает режим добавления - Возбуждает:
-
IOException- если возникли проблемы ввода-вывода при открытии файлов. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control"). -
IllegalArgumentException- еслиlimit < 0, илиcount < 1. -
IllegalArgumentException- если pattern — пустая строка
FileHandler
public FileHandler(String pattern, long limit, int count, boolean append) throws IOException
FileHandler для записи в набор файлов с опциональным добавлением. Когда (приблизительно) заданный предел достигнут в одном файле, откроется другой файл. Вывод будет циклически переключаться между набором файлов. Обработчик настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что переданный аргумент pattern используется в качестве шаблона имени файла, предел файла установлен в значение аргумента limit, количество файлов — в значение аргумента count, и режим добавления — значение аргумента append.
Значение count должно быть не меньше 1.
- Параметры:
-
pattern- шаблон для именования выходного файла -
limit- максимальное количество байтов для записи в любой один файл -
count- количество файлов для использования -
append- указывает режим добавления - Возбуждает:
-
IOException- если возникли проблемы ввода-вывода при открытии файлов. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control"). -
IllegalArgumentException- еслиlimit < 0, илиcount < 1. -
IllegalArgumentException- если pattern — пустая строка - С тех пор как:
- 9
Подробное описание методов
publish
public void publish(LogRecord record)
LogRecord.- Переопределяет:
-
publishв классеStreamHandler - Параметры:
-
record- описание события логирования. Нулевой объект игнорируется и не публикуется.
close
public void close() throws SecurityException
- Переопределяет:
-
closeв классеStreamHandler - Возбуждает:
-
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетLoggingPermission("control").
© 1993, 2021, 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/17/docs/api/java.logging/java/util/logging/FileHandler.html