PSR-3
PSR-3 — интерфейс логгера
Суть в одном предложении
PSR-3 описывает общий интерфейс для логгеров в PHP, чтобы библиотеки могли принимать любой совместимый логгер.
Краткое определение
PSR-3 (Logger Interface) — стандарт PHP-FIG, задающий интерфейс Psr\Log\LoggerInterface: методы для уровней логирования (debug, info, warning, error, critical, alert, emergency) и единый формат контекста, чтобы приложение не зависело от конкретной реализации логгера.
Оригинал и перевод
- Язык: английский
- Оригинал: PSR-3: Logger Interface
- Буквальный перевод: интерфейс логгера
Синонимы и варианты написания
- PSR-3
- PSR3
- Logger Interface
Происхождение
Принят PHP-FIG. Реализации: Monolog, Laravel Log, Symfony Logger и др. Пакет psr/log в Composer предоставляет только интерфейсы.
Где используется
- Фреймворки и приложения, принимающие логгер через зависимость
- Библиотеки, которые логируют через переданный PSR-3-логгер
- Monolog, Laravel, Symfony и другие экосистемы
Когда это важно
При интеграции библиотек: если и фреймворк, и библиотека используют PSR-3, можно подставить один логгер (например, Monolog) и получать все логи в одном формате и хранилище.
Подробное объяснение
Интерфейс задаёт методы log($level, $message, array $context = []) и укороченные debug(), info(), warning(), error() и т.д. Уровни и сообщение — строки, контекст — массив произвольных данных. Реализация решает, куда писать (файл, syslog, сервис). Приложение зависит от интерфейса, а не от конкретного класса — это типичный Dependency Inversion.
Аналоги и связанные термины
- PSR-4 — автозагрузка классов; пакет
psr/logподключается по PSR-4 - Monolog — популярная реализация PSR-3
- Logger (логгер) — общее название компонента
Пример использования
«В конструктор сервиса передаём любой PSR-3-совместимый логгер — в тестах подставляем NullLogger, в проде Monolog.»
Мини‑FAQ
- Нужно ли ставить пакет psr/log?
Ответ: Да, если используете типPsr\Log\LoggerInterfaceв коде или подключаете библиотеку, которая его требует. Пакет содержит только интерфейсы.
Смотри также
- PSR-4
- Monolog (реализация)
- Interface