Laravel для отправки электронной почты для ведения журнала вместо записи на хранение
Я просмотрел документацию и не могу найти способ изменить журнал для любых ошибок, которые обычно записываются в /app/storage/logs/logs/log -apache2handler-xxxx-xx-xx.txt
но на рабочем сервере я хочу, чтобы любой из них был отправлен мне по электронной почте.
Есть ли способ сделать это?
Ответы
Ответ 1
Я все еще регистрирую ошибку, и если она создается, отправьте электронное письмо за исключением:
App::error(function(Exception $exception, $code)
{
Log::error($exception);
if (Config::getEnvironment() == 'production')
{
$data = array('exception' => $exception);
Mail::send('emails.error', $data, function($message)
{
$message->from($email_app);
$message->to(Config::get('settings.error_email'))->subject(Config::get('settings.app_name') . ' Error');
});
Log::info('Error Email sent to ' . Config::get('settings.error_email'));
return Response::view('errors.500', array(), 500);
}
});
Ответ 2
Due Laravel использует внутреннюю библиотеку Monolog, я думаю, что это лучшее решение для использования планируемых обработчиков журналов. Поэтому каждое исключенное исключение и ручные вызовы журнала будут отправляться на ваш адрес электронной почты.
, если вы используете mail()
Добавьте NativeMailerHandler в ваше приложение /start/global.php:
$logFile = 'log-'.php_sapi_name().'.txt';
Log::useDailyFiles(storage_path().'/logs/'.$logFile);
Log::getMonolog()->pushHandler(
new Monolog\Handler\NativeMailerHandler(
'[email protected]',
'[Log] Some Subject',
'[email protected]'
Logger::ERROR, // set minimal log lvl for mail
true, // bubble to next handler?
70 // max column width in your mail
)
);
, если вы настроили Laravel SMTP Mailing
Добавьте SwiftMailerHandler в ваше приложение /start/global.php:
(Swift Mailer также используется внутри Laravel)
$logFile = 'log-'.php_sapi_name().'.txt';
Log::useDailyFiles(storage_path().'/logs/'.$logFile);
Log::getMonolog()->pushHandler(
new Monolog\Handler\SwiftMailerHandler(
Mail::getSwiftMailer(),
Swift_Message::newInstance('[Log] Some Subject')->setFrom('[email protected]')->setTo('[email protected]'),
Logger::ERROR, // set minimal log lvl for mail
true // bubble to next handler?
)
);
Добавьте проверку среды, как описано в другом сообщении, если хотите. Для многих других обработчиков также посмотрите https://github.com/seldaek/monolog
Ответ 3
App::error(function(Exception $exception)
{
//Log::error($exception);
// send email
});
Проверьте документы здесь: http://laravel.com/docs/errors#handling-errors
В принципе, вам решать, какую логику поставить в обработчик. Я думаю, что также возможно создать отдельный файл global.php для производства, не ставя инструкции if-else, чтобы узнать, в какой среде вы находитесь.
Ответ 4
используйте пакет, например
Начните с установки этого пакета через Composer. Измените файл проекта composer.json, чтобы потребовать dinesh/bugonemail.
Или посетите
http://dineshrabara.github.io/bugonemail/