- PVSM.RU - https://www.pvsm.ru -
На дворе 2017-ый год и довольно значительная часть сообщества PHP пытается использовать
PSR: PHP standard recommendation [1], цель которых — дать возможность заменять отдельные части фреймворков. Среди PSR-ов есть PSR-3, в котором описывается интерфейс для логгера. На данный момент существует множество совместимых с PSR-3 библиотек, в числе которых широко применяемый Monolog [2].
На тему PSR-3 и Yii 2.0 часто задают следующие вопросы:
Разберём каждый подробно.
Логер в Yii 2.0 [3] — один из добротно сделанных компонентов. Он стабилен, легко расширяется, работает быстро и умеет много всего. Разработан этот компонент был на ранних стадиях тогда ещё секретной пред-альфа версии фреймворка и с тех пор значительно не менялся. Дизайн очень близок к изначальному, который был в 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 есть существенные плюсы.
Логирование в Yii довольно гибко. Центральный компонент-диспетчер собирает сообщения и раскидывает их по индивидуальным целям логирования [4], которые, в свою очередь, пишут сообщения в файлы, отсылают почту и так далее.
Цели логирования легко расширять и создавать, так что написать свою не так уж сложно. С другой стороны, зачем что-то писать, когда есть популярные PSR-3 логгеры и, особенно,
Monolog [2]? Так и хочется использовать готовое. Например, отсылать сообщения в чат Slack.
Я реализовал расширение [5], которое позволяет использовать любой совместимый PSR-3 логгер как цель логирования.
Расширение приводит уровни логирования Yii к сходным уровням PSR-3 и отдаёт сообщения и сопутствующие данные на обработку PSR-3 логеру. Конфигурация довольно проста и описана на странице расширения [5].
Yii никогда не старался быть набором независимых библиотек. Независимые компоненты — штука хорошая, но у независимости есть цена. Приходится отказываться от переиспользования кода из ядра фреймворка, что выливается в довольно большой объём кода как такового и, зачастую, переабстрагированные решения.
Логгер, в принципе, не сильно относится к написанному выше. Он практически не зависит от фреймворка. Наоборот — фреймворк зависит от него. Попытка сделать из логгера отдельную библиотеку, возможно, удастся и так как дизайн довольно хорош, есть шанс получить своё место среди таких независимых решений, как Monolog. Стоит попробовать и я попробую, если кампания на Patreon [6] даст мне достаточно времени для работы над OpenSource.
Автор: SamDark
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/248747
Ссылки в тексте:
[1] PSR: PHP standard recommendation: http://www.php-fig.org/psr/
[2] Monolog: https://github.com/Seldaek/monolog
[3] Логер в Yii 2.0: http://www.yiiframework.com/doc-2.0/guide-runtime-logging.html
[4] целям логирования: http://www.yiiframework.com/doc-2.0/guide-runtime-logging.html#log-targets
[5] расширение: https://github.com/samdark/yii2-psr-log-target
[6] кампания на Patreon: https://www.patreon.com/samdark
[7] Источник: https://habrahabr.ru/post/323584/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.