Yii*

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

SamDark 9 марта в 19:54 6,3k

На дворе 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.

Проголосовать:
+32
Сохранить: