Отправка сообщений об ошибках на email

Хорошо когда можно узнать о проблеме на сайте сразу как она возникла. К сожалению постоянно заглядывать в логи приложения слишком накладно, а если приложение не одно, то на это и вовсе нет ни времени ни желания.

К счатью есть простой способ избавить себя от нудной работы - это получать сообщения о случившихся ошибках прямо на свою почту.

В yii2 это сделать очень легко. В список зависимостей в composer.json нужно добавить swiftmailer, если его еще там нет:

"yiisoft/yii2-swiftmailer": "*"  

В конфигурацию приложения нужно добавить компонет mailer:

'mailer' => [  
    'class' => 'yii\swiftmailer\Mailer',
],

А в компонент логгера нужно добавить новый таргет:

'log' => [  
    'targets' => [
        [
            'class' => 'yii\log\FileTarget',
            'levels' => ['error', 'warning'],
        ],
        [
            'class' => 'yii\log\EmailTarget',
            'mailer' => 'mailer',
            'levels' => ['error', 'warning'],
            'message' => [
                'from' => ['admin@mysite.ru'],
                'to' => ['developer@mysite.ru'],
                'subject' => 'Log message',
            ],
        ],
    ],
],

Этого достаточно если у вас настроена отправка почты через стандартную функцию mail в php. Мне же обычно лень заморачиваться с настройкой почты на сервере и я использую mailgun в качестве почтового сервера. Там на бесплатном аккаунте можно отправлять до 10000 писем в месяц, мне этого более чем достаточно.

Тогда нужно дополнить конфигурацию мейлера:

'mailer' => [  
    'class' => 'yii\swiftmailer\Mailer',
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => 'smtp.mailgun.org',
        'username' => 'smtp username',
        'password' => 'smtp password',
    ],
],