log_handlers/BufferedRotatingFileHandler.md
Класс BufferedRotatingFileHandler
Пространство имён: goodboyalex\php_components_pack\log_handlers
Версия: 1.0
Доступно с: 1.3
Описание
Класс реализует обработчик системы журналирования с буферизацией и ротацией файлов. Предназначен для веб-приложений с рекомендуемым буфером 50-100 сообщений.
Основные характеристики
- Буферизация: накопление записей в памяти
- Ротация: автоматическое управление размером и количеством файлов
- Конфигурация: через массив настроек
- Форматирование: использует ILogFormatter для форматирования сообщений
Свойства класса
formatter: объект форматера сообщенийconfig: массив конфигурации
Методы класса
Основные методы
handle(): обработка и запись сообщенияflush(): принудительный сброс буфераsetFile(): установка пути к файлуsetFlushAfter(): установка порога сбросаsetSizeLimit(): установка максимального размера файлаsetFilesLimit(): установка максимального количества файлов
Конфигурация
Пример настроек:
$config = [
'file' => 'c:\logs\my_log.log',
'max_size' => 5242880, // 5 МБ
'max_files' => 3,
'flush_threshold' => 3000
];
Примеры использования
// Создание обработчика
$formatter = new DefaultLogFormatter();
$handler = new BufferedRotatingFileHandler();
$handler->formatter = $formatter;
$handler->setFile('app.log');
$handler->setSizeLimit(1024 * 1024); // 1 МБ
$handler->setFilesLimit(5);
$handler->setFlushAfter(100); // 100 сообщений
// Обработка сообщения
$handler->handle(
MessageType::INFO,
'Операция выполнена',
['user_id' => 123]
);
Особенности реализации
- Автоматическое управление файлами: ротация при достижении максимального размера
- Буферизация: снижение нагрузки на файловую систему
- Деструкторы: гарантированный сброс оставшихся записей
- Гибкая конфигурация: через массив настроек
Рекомендации по использованию
-
Настройка конфигурации:
- Укажите корректный путь к файлу
- Настройте оптимальный порог буферизации
- Определите подходящий размер файлов
-
Обработка ошибок:
- Добавьте обработку исключений при работе с файлами
- Проверьте права доступа к файлу лога