Логирование для PHP (Monolog)

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое логирование в 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.

Рекомендаций