Обзор логирования — IO7 Framework
Внимание
Данная статья документации написана нейросетью. Возможны некоторые расхождения и неточность информации!
Обзор
IO7 предоставляет систему логирования на основе класса IO\Event и профилировщик IO\Profile\PinbaManager для анализа производительности.
Архитектура
IO\Event — Логирование событий (echo, file, error_log, syslog, custom)
IO\Profile\PinbaManager — Профилировщик для Pinba (таймеры, метрики)
Уровни логирования
| Константа | Значение | Описание |
|---|---|---|
LOG_DEBUG | 0 | Отладочная информация |
LOG_INFO | 1 | Информационные сообщения |
LOG_WARNING | 2 | Предупреждения |
LOG_ERROR | 3 | Ошибки |
LOG_CRITICAL | 4 | Критические ошибки |
Обработчики
| Константа | Описание |
|---|---|
HANDLER_ECHO | Вывод на экран |
HANDLER_FILE | Запись в файл |
HANDLER_ERROR_LOG | Через error_log() |
HANDLER_SYSLOG | Через syslog |
HANDLER_CUSTOM | Пользовательский обработчик |
Быстрый старт
Простое логирование
\IO\Event::info('Запрос обработан');
\IO\Event::error('Ошибка подключения к БД');
\IO\Event::debug('Параметры запроса', ['params' => $params]);
Настройка обработчиков
\IO\Event::start();
\IO\Event::addHandler('file');
\IO\Event::addHandler('syslog');
\IO\Event::addHandler('custom', function (int $level, string $message, array $context): void {
sendToExternalSystem($message);
});
Профилирование
\IO\Profile\PinbaManager::init([
'enabled' => true,
'server' => '127.0.0.1:3002',
]);
$timerId = \IO\Profile\PinbaManager::start('api_request', ['endpoint' => '/api/users']);
// ... выполнение запроса
\IO\Profile\PinbaManager::stop($timerId);
PinbaManager использует gggeek/polyfill-pinba — чистую PHP-реализацию Pinba extension. Установка нативного расширения не требуется.
Конфигурация (.env)
# Уровень логирования
LOG_HANDLERS[]=echo
LOG_HANDLERS[]=file
# Файл логов
LOG_FILE=/var/log/io7/app.log
LOG_MAX_SIZE=10485760
Pinba настраивается через php.ini или PinbaManager::init():
pinba.enabled = 1
pinba.server = 127.0.0.1:3002