Логирование для PHP: лучшие решения и библиотеки

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

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

Начать курс

Логирование для PHP: лучшие решения

Логирование — важнейшая часть любого серьёзного PHP-приложения. Оно помогает отслеживать ошибки, анализировать поведение пользователей, проводить аудит безопасности и отлаживать код. В этой статье мы рассмотрим лучшие библиотеки для логирования в PHP, их особенности и примеры использования.

Зачем нужно логирование?

Без логирования разработчик часто остаётся "слепым" при возникновении проблем. Качественная система логирования позволяет:

  • Быстро находить и исправлять ошибки в production-среде
  • Собирать статистику и анализировать производительность
  • Обеспечивать соответствие стандартам безопасности (PCI DSS, GDPR)
  • Отслеживать подозрительную активность

Стандарт PSR-3 (Logger Interface)

Большинство современных библиотек для PHP следуют стандарту PSR-3, который определяет единый интерфейс для логгеров. Это позволяет легко заменять одну библиотеку на другую без изменения кода приложения.

Основные уровни логирования по PSR-3:

  • emergency — система неработоспособна
  • alert — требуется немедленное вмешательство
  • critical — критическая ошибка
  • error — ошибка, не требующая немедленного вмешательства
  • warning — предупреждение
  • notice — нормальное, но значимое событие
  • info — информационное сообщение
  • debug — отладочная информация

Лучшие библиотеки для логирования в PHP

1. Monolog

Monolog — это де-факто стандарт для логирования в PHP. Он поддерживает PSR-3, имеет огромное количество "обработчиков" (handlers) и "форматтеров". Устанавливается через Composer:

composer require monolog/monolog

Пример базового использования:

<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('my_app');
$log->pushHandler(new StreamHandler('/var/log/app.log', Logger::WARNING));

$log->warning('Предупреждение: превышен лимит запросов');
$log->error('Ошибка подключения к БД', ['db' => 'mysql', 'time' => 0.5]);
?>

Monolog поддерживает отправку логов в файлы, базы данных, Slack, Telegram, Email, Syslog и многие другие каналы. Гибкая архитектура позволяет создавать собственные обработчики.

2. Analog

Analog — лёгкая и быстрая библиотека, ориентированная на простоту. Она не требует установки зависимостей и идеально подходит для небольших проектов.

<?php
require_once 'Analog.php';

Analog::handler(Analog\Handler\File::init('/var/log/app.log'));
Analog::log('Страница загружена', Analog::INFO);
?>

Analog поддерживает те же уровни логирования, что и PSR-3, но имеет собственный API. Для интеграции с PSR-3 можно использовать мост AnalogPSR3.

3. KLogger

KLogger — минималистичная библиотека, которая когда-то была популярна. Сейчас её развитие остановлено, но она всё ещё используется в старых проектах. Пример:

<?php
$log = new Katzgrau\KLogger\Logger('/var/log/');
$log->info('Пользователь вошёл в систему');
?>

Не рекомендуется для новых проектов из-за отсутствия поддержки PSR-3 и обновлений.

4. Log4php

Log4php — порт популярного Java-фреймворка Log4j. Поддерживает сложные конфигурации через XML или PHP-массивы:

<?php
require_once 'Logger.php';
Logger::configure('config.xml');

$logger = Logger::getLogger('main');
$logger->error('Критическая ошибка');
?>

Log4php имеет крутую кривую обучения, но предоставляет мощные возможности: фильтрацию, несколько аппендеров, макросы.

Сравнение библиотек

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

Библиотека PSR-3 Простота Гибкость Популярность
Monolog Да Средняя Высокая Очень высокая