BMC IO DocsBMC IO Docs
IO v6
IO v7
Notes
Docs
IO v6
IO v7
Notes
Docs
  • IO Framework v7

    • О фреймворке
    • Что изменилось в 7 версии
    • IO7 Framework vs Laravel 13 — Сравнение
    • Структура
    • Варианты проектов
    • Доступ к участкам проекта
    • Разворачивание нового проекта
    • Установка проекта
    • Запуск локальной разработки
  • API

    • Обзор API
    • IOCore::call() и IOCore::callAction()
    • Создание API
  • CLI

    • Обзор CLI
    • iocli
    • Кастомные CLI команды
  • Работа с базами данных

    • Обзор работы с базами данных
    • Cron / Планировщик задач (Schedule)
    • Фабрики
    • Миграции
    • Сидеры
    • Query Builder
    • Подключение MinIO
    • Подключение MongoDB
    • Подключение MySQL
    • Подключение PostgreSQL
    • Подключение ProxySQL
    • Подключение RabbitMQ
    • Подключение Redis
  • Логирование

    • Обзор логирования
    • IOEvent - Логирование событий
    • Pinba (PinbaManager) - Профилировщик
  • Модели

    • Обзор моделей
    • CRUD операции
    • Связи моделей
  • Очереди

    • Обзор очередей
    • RabbitMQ
  • Маршруты

    • Обзор маршрутов
    • Определение маршрутов
    • Middleware
  • Сессии

    • Обзор сессий
    • Кроссдоменная SSO
    • JWT авторизация
    • Социальная авторизация
    • OAuth2
    • Keycloak
  • Twig

    • Обзор Twig
    • Формы (FormBuilder)
    • Twig функции
  • Тестирование

    • Обзор тестирования
    • Unit тесты
  • Backend

    • Настройки проекта Conf.php
    • Настройки модуля Module.php
    • Настройки composer
    • Функции фреймворка
    • Вспомогательные функции (Helpers)
    • Глобальные переменные
    • Константы фреймворка
    • Event класс
    • Core класс
    • Route и работа с ними
    • Request и работа с ними
    • Middleware и работа с ними
    • Class и работа с ними
    • Api model и работа с ними
    • Template и работа с ними
    • Мультиязычность и словарь фраз
    • Bin скрипты и работа с ними
    • Cron скрипты и работа с ними
    • $ioSession и работа с сессией
    • $ioHash и работа с кешем
    • $ioXCache и работа с кешем
    • $iodb и работа с базой данных
    • Миграции
  • Frontend

    • Twig шаблонизатор и работа с ним
    • Twig функции
    • Twig фильтры
    • Twig контекст
    • Настройка NPM
    • Сборка Frontend составляющей
    • Обращение к Api через JS
    • Хранилище (store)
    • Навигация в хосте
    • Навигация в микрофронтенде
    • Параметры микрофронтенда
    • Проверка полномочий
  • Tailux UI Компоненты

    • Базовый UI

      • AvatarDot
      • Avatar
      • Badge
      • Button
      • Card
      • ConfirmModal
      • Divider
      • Highlight
      • Tag
    • Загрузка

      • Circlebar
      • Progress
      • Skeleton
      • Spinner
    • Навигация

      • Accordion
      • AccordionButton
      • AccordionHeader
      • AccordionItem
      • AccordionPanel
      • AccordionProvider
      • Pagination
      • PaginationControl
      • PaginationItems
      • PaginationDots
      • PaginationFirst
      • PaginationLast
      • PaginationNext
      • PaginationPrevious
    • Отображение данных

      • Box
      • Collapse
      • ContextualHelp
      • ScrollShadow
      • Timeline
      • TimelineItem
    • Элементы таблиц

      • Table
      • CollapsibleSearch
      • ColumnFilter
      • CopyableCell
      • DateFilter
      • FacetedFilter
      • FilterSelector
      • PaginationSection
      • RadioFilter
      • RangeFilter
      • ResponsiveFilter
      • RoleFilter
      • SelectedRowsActions
      • TableColumnVisibility
      • TableSettings
      • TableSortIcon
    • Элементы форм

      • Checkbox
      • Combobox
      • DatePicker
      • Filepond
      • Input
      • Listbox
      • Radio
      • Range
      • Select
      • StyledSwitch
      • Swap
      • SwapOn
      • SwapOff
      • Switch
      • Textarea
      • TextEditor
      • Upload

IO\Event — Логирование событий

Внимание

Данная статья документации написана нейросетью. Возможны некоторые расхождения и неточность информации!

  • Обзор
  • Константы
    • Уровни логирования
    • Типы обработчиков
  • Свойства
  • Методы
    • start(): void
    • addHandler(string $type, ?callable $callback = null): void
    • removeHandler(string $type): void
    • log(array $params): void
    • debug(string $message, array $context = []): void
    • info(string $message, array $context = []): void
    • warning(string $message, array $context = []): void
    • error(string $message, array $context = []): void
    • echo(string $msg): void
  • Примеры
    • Простое логирование
    • С пользовательским обработчиком
    • Логирование в файл с ротацией
    • Настройка уровня логирования
    • Логирование в syslog

Обзор

IO\Event — статический класс для логирования событий. Поддерживает несколько обработчиков: echo, file, error_log, syslog, custom. Формат сообщения: [timestamp] [LEVEL] message context.

Константы

Уровни логирования

КонстантаЗначениеОписание
LOG_DEBUG0Отладочная информация
LOG_INFO1Информационные сообщения
LOG_WARNING2Предупреждения
LOG_ERROR3Ошибки
LOG_CRITICAL4Критические ошибки

Типы обработчиков

КонстантаОписание
HANDLER_ECHOВывод на экран (HTML)
HANDLER_FILEЗапись в файл с ротацией
HANDLER_ERROR_LOGЧерез PHP error_log()
HANDLER_SYSLOGЧерез syslog
HANDLER_CUSTOMПользовательский callback

Свойства

СвойствоТипЗначение по умолчаниюОбязателенОписание
$loglevelintLOG_DEBUGНетМинимальный уровень логирования
$echoint0НетВключить вывод на экран (1=вкл)
$logFilestring'/var/log/io7/app.log'НетПуть к файлу логов
$logMaxSizeint10485760 (10MB)НетМаксимальный размер файла

Методы

start(): void

Инициализация обработчиков по умолчанию. Вызывается один раз при старте.

\IO\Event::start();

addHandler(string $type, ?callable $callback = null): void

Добавить обработчик логирования.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$typestring—ДаТип обработчика (HANDLER_*)
$callbackcallable|nullnullНетПользовательский callback (для HANDLER_CUSTOM)
\IO\Event::addHandler('file');
\IO\Event::addHandler('syslog');

\IO\Event::addHandler('custom', function (int $level, string $message, array $context): void {
    sendToExternalSystem($message);
});

removeHandler(string $type): void

Удалить обработчик логирования.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$typestring—ДаТип обработчика
\IO\Event::removeHandler('echo');

log(array $params): void

Логирование сообщения с произвольным уровнем.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$paramsarray<string, mixed>—ДаПараметры: level, msg, context
\IO\Event::log([
    'level' => 'warning',
    'msg' => 'Медленный запрос',
    'context' => ['duration' => '2.5s', 'query' => 'SELECT * FROM users'],
]);

debug(string $message, array $context = []): void

Логирование debug сообщения.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$messagestring—ДаСообщение
$contextarray<string, mixed>[]НетКонтекст
\IO\Event::debug('Параметры запроса', ['params' => $params]);

info(string $message, array $context = []): void

Логирование info сообщения.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$messagestring—ДаСообщение
$contextarray<string, mixed>[]НетКонтекст
\IO\Event::info('Запрос обработан', ['user_id' => 123]);

warning(string $message, array $context = []): void

Логирование warning сообщения.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$messagestring—ДаСообщение
$contextarray<string, mixed>[]НетКонтекст
\IO\Event::warning('Медленный запрос', ['duration' => '2.5s']);

error(string $message, array $context = []): void

Логирование error сообщения.

ПараметрТипЗначение по умолчаниюОбязателенОписание
$messagestring—ДаСообщение
$contextarray<string, mixed>[]НетКонтекст
\IO\Event::error('Ошибка подключения к БД', ['host' => 'localhost']);

echo(string $msg): void

Вывод на экран (если включён).

ПараметрТипЗначение по умолчаниюОбязателенОписание
$msgstring—ДаСообщение
\IO\Event::echo('Текущее время выполнения');

Примеры

Простое логирование

\IO\Event::start();
\IO\Event::info('Приложение запущено');
\IO\Event::error('Ошибка подключения');

С пользовательским обработчиком

\IO\Event::addHandler('custom', function (int $level, string $message, array $context): void {
    $botToken = getenv('TELEGRAM_BOT_TOKEN');
    $chatId = getenv('TELEGRAM_CHAT_ID');

    $text = "[{$level}] {$message}";
    if (!empty($context)) {
        $text .= "\n" . json_encode($context, JSON_UNESCAPED_UNICODE);
    }

    file_get_contents("https://api.telegram.org/bot{$botToken}/sendMessage?chat_id={$chatId}&text=" . urlencode($text));
});

\IO\Event::error('Критическая ошибка', ['service' => 'payment']);

Логирование в файл с ротацией

\IO\Event::addHandler('file');
\IO\Event::$logFile = '/var/log/myapp/app.log';
\IO\Event::$logMaxSize = 5242880; // 5MB

// Формат в файле:
// [2024-01-15 10:30:45] [ERROR] Ошибка подключения {"host":"localhost","port":3306}

Настройка уровня логирования

\IO\Event::$loglevel = \IO\Event::LOG_WARNING;

\IO\Event::debug('Это не будет записано');
\IO\Event::warning('Это будет записано');
\IO\Event::error('И это тоже');

Логирование в syslog

\IO\Event::addHandler('syslog');

// сообщения отправляются через openlog/closelog
// Формат: IO7: [ERROR] сообщение
Prev
Обзор логирования
Next
Pinba (PinbaManager) - Профилировщик