Логирование в Yii 2.0 и PSR-3

в 16:54, , рубрики: open source, psr-3, yii, логи, логирование

На дворе 2017-ый год и довольно значительная часть сообщества PHP пытается использовать
PSR: PHP standard recommendation, цель которых — дать возможность заменять отдельные части фреймворков. Среди PSR-ов есть PSR-3, в котором описывается интерфейс для логгера. На данный момент существует множество совместимых с PSR-3 библиотек, в числе которых широко применяемый Monolog.

На тему PSR-3 и Yii 2.0 часто задают следующие вопросы:

  1. Почему Yii 2.0 не совместим с PSR-3?
  2. Как мне писать сообщения в совместимый с PSR-3 логгер?
  3. Есть ли в планах сделать логгер Yii совместимым с PSR-3 и выпилить в отдельный пакет?

Разберём каждый подробно.

Почему Yii 2.0 не совместим с PSR-3?

Логер в Yii 2.0 — один из добротно сделанных компонентов. Он стабилен, легко расширяется, работает быстро и умеет много всего. Разработан этот компонент был на ранних стадиях тогда ещё секретной пред-альфа версии фреймворка и с тех пор значительно не менялся. Дизайн очень близок к изначальному, который был в Yii 1.0, так что годом его формирования можно считать 2008.

Год важен, так как группа PHP-FIG, занимающаяся PSR-ами, сформировалась значительно позже. Во время альфа-версии Yii 2.0 у нас уже был проверенный рабочий дизайн логгера, отлично показавший себя на Yii 1.0 и Yii 1.1. В то время PSR-3 не был чем-то уж сильно привлекательным. Чего-то особенного логгеры, его реализующие, ещё не умели и, поэтому, плюсов в реализации этого PSR в Yii framework на тот момент не было. Решили не делать.

Сейчас пришло время рассмотреть решение ещё раз для версии 2.1 так как в совместимости с PSR-3 есть существенные плюсы.

Как мне писать сообщения в совместимый с PSR-3 логгер?

Логирование в Yii довольно гибко. Центральный компонент-диспетчер собирает сообщения и раскидывает их по индивидуальным целям логирования, которые, в свою очередь, пишут сообщения в файлы, отсылают почту и так далее.

Цели логирования легко расширять и создавать, так что написать свою не так уж сложно. С другой стороны, зачем что-то писать, когда есть популярные PSR-3 логгеры и, особенно,
Monolog? Так и хочется использовать готовое. Например, отсылать сообщения в чат Slack.

Я реализовал расширение, которое позволяет использовать любой совместимый PSR-3 логгер как цель логирования.

Расширение приводит уровни логирования Yii к сходным уровням PSR-3 и отдаёт сообщения и сопутствующие данные на обработку PSR-3 логеру. Конфигурация довольно проста и описана на странице расширения.

Есть ли в планах сделать логгер Yii совместимым с PSR-3 и выпилить в отдельный пакет?

Yii никогда не старался быть набором независимых библиотек. Независимые компоненты — штука хорошая, но у независимости есть цена. Приходится отказываться от переиспользования кода из ядра фреймворка, что выливается в довольно большой объём кода как такового и, зачастую, переабстрагированные решения.

Логгер, в принципе, не сильно относится к написанному выше. Он практически не зависит от фреймворка. Наоборот — фреймворк зависит от него. Попытка сделать из логгера отдельную библиотеку, возможно, удастся и так как дизайн довольно хорош, есть шанс получить своё место среди таких независимых решений, как Monolog. Стоит попробовать и я попробую, если кампания на Patreon даст мне достаточно времени для работы над OpenSource.

Автор: SamDark

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js