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/