Логирование из «Йии» в «Сентри»
Недавно исполнился год одному маленькому, но полезному расширению с «Сентри-логером» для фреймворка «Йии-2». Бета-версию я опубликовал 29 декабря 2015 года. В то время поиск существующих решений не принёс больших успехов: имеющиеся в открытом доступе логеры либо плохо сопровождались, либо имели недостаточную нам функциональность.
Наш логер позволяет прикладывать к сообщениям теги и контекстную информацию, умеет модифицировать экстра-поля через колбек-функцию в конфигурации компонента, покрыт юнит-тестами и совместим со всеми актуальными версиями ПХП. Ничего особенного, просто аккуратное и гибкое расширение для интеграции «Йии» с «Сентри».
⇩ | composer require notamedia/yii2-sentry |
✎ |
Полезные советы
Подключая наш (или любой другой) логер, помните, что любая система может сломаться и вы должны быть готовы к такому происшествию, как недоступность «Сентри». Всегда подключайте в приложении резервный логер:
return [
'components' => [
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'notamedia\sentry\SentryTarget',
'dsn' => 'http://sentry/13',
'levels' => ['error', 'warning'],
],
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
];
Из-за отложенного экспорта в логерах «Йии», сообщения от долгоиграющих консольных процессов (крон-задачи и воркеры) могут крайне долго не записываться в логи. Поэтому, для консольных приложений устанавливайте свойства exportInterval и flushInterval в значение 1:
return [
'components' => [
'log' => [
'flushInterval' => 1,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'exportInterval' => 1
],
],
],
],
];
В противном случае, в логах не появятся сообщения до тех пор, пока логер «Йии» не наберёт достаточное количество, что бы записать их все махом.
Читайте так же: «Протоколирование в программировании».