Что такое логирование в PHP и зачем оно нужно?
Логирование — это процесс записи информации о работе приложения: ошибок, предупреждений, отладочных сообщений и пользовательских действий. В PHP, в отличие от Python, нет встроенного PSR-совместимого логгера «из коробки» (хотя есть функции error_log()). Поэтому лучшим решением является использование библиотеки Monolog — де-факто стандарта логирования для PHP-проектов.
Зачем логировать?
- Отладка продакшена (stack trace ошибок)
- Мониторинг производительности
- Аудит безопасности (логины, изменения данных)
- Анализ поведения пользователей
Установка Monolog
Установка производится через Composer (аналог pip для PHP):
composer require monolog/monologДля работы потребуется PHP 8.0+ и Composer 2.x.
Основные функции и возможности
Monolog поддерживает:
- Каналы (Channels) — изолированные логгеры для разных частей приложения (например, 'security', 'database')
- Уровни логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL и др.)
- Хендлеры (Handlers) — куда писать: файлы, базы данных, Slack, Telegram, email
- Процессоры (Processors) — обогащение сообщений контекстом (IP, время, сессия)
Пример кода
<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\TelegramBotHandler;
use Monolog\Processor\WebProcessor;
// Создаём канал 'app'
$log = new Logger('app');
// Хендлер для записи в файл
$log->pushHandler(new StreamHandler(__DIR__.'/logs/app.log', Logger::WARNING));
// Хендлер для Telegram (опционально)
$telegram = new TelegramBotHandler('YOUR_BOT_TOKEN', 'CHAT_ID', Logger::CRITICAL);
$log->pushHandler($telegram);
// Процессор для добавления IP и User-Agent
$log->pushProcessor(new WebProcessor());
// Логируем
$log->info('Пользователь вошёл в систему', ['user_id' => 123]);
$log->error('Ошибка базы данных', ['sql' => 'SELECT * FROM users']);
Когда использовать
Monolog обязателен в следующих случаях:
- Любой коммерческий или open-source проект на PHP (Symfony, Laravel используют Monolog по умолчанию)
- Микросервисы и API — для трейсинга запросов
- Крон-скрипты и воркеры — для отслеживания выполнения задач
- При интеграции с внешними сервисами (логи в Graylog, Sentry, Papertrail)
Библиотека протестирована в тысячах проектов и поддерживает практически любой транспорт для логов. Если вы пишете на PHP — начните с Monolog.