Хорошо когда можно узнать о проблеме на сайте сразу как она возникла. К сожалению постоянно заглядывать в логи приложения слишком накладно, а если приложение не одно, то на это и вовсе нет ни времени ни желания.
К счатью есть простой способ избавить себя от нудной работы - это получать сообщения о случившихся ошибках прямо на свою почту.
В 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' => ['[email protected]'],
'to' => ['[email protected]'],
'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',
],
],