Laravel 5.2 +单声道日志严重错误发送到邮件

时间:2017-12-07 09:54:06

标签: email laravel-5 mono laravel-5.2

如何将每个严重错误例外发送到电子邮件。在当前的Laravel 5.2中,它登录/storage/logs/laravel.log文件。我希望通过MailHandler邮件发送严重错误,但不知道如何实现它。

在文件中我们得到了这种类型的错误:

[2017-12-07 09:32:51] local.ERROR: ParseError: syntax error, unexpected 'if' (T_IF) in /home/ilogix/Workspace/cudefender/site/app/Http/Controllers/FormsController.php:53
Stack trace:
#0 /home/ilogix/Workspace/cudefender/site/vendor/composer/ClassLoader.php(301): Composer\Autoload\includeFile('/home/ilogix/Wo...')
#1 [internal function]: Composer\Autoload\ClassLoader->loadClass('App\\Http\\Contro...')
#2 [internal function]: spl_autoload_call('App\\Http\\Contro...')
#3 /home/ilogix/Workspace/cudefender/site/vendor/laravel/framework/src/Illuminate/Routing/Route.php(280): ReflectionMethod->__construct('App\\Http\\Contro...', 'index')

我在monolog邮件处理程序的电子邮件中也需要它。

1 个答案:

答案 0 :(得分:0)

您可以编辑app/Exceptions/Handler.php文件以将电子邮件发送到指定地址。例如,将report功能编辑为:

public function report(Exception $e)
{

    try {
      \Mail::raw( $e->__toString(), function ( $m ) {
        $m->from('no-reply@your-app.com', 'APP_NAME');
        $m->to( 'name@domain.com' )->subject('APP_NAME - Fatal Error' );
      });
    } catch ( \Exception $e ) {
      // ignore
    }

    parent::report($e);
}

此代码会将例外$e的内容发送到name@domain.com。您可以更改发件人地址,并根据您的需要进行操作。

根据遇到的错误,您收到的消息如下所示:

  

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException in   你的应用内/供应商/ laravel /框架/ SRC /照亮/路由/ RouteCollection.php:161

     

堆栈跟踪:#0   您的应用程序内/供应商/ laravel /框架/ src目录/照亮/路由/ Router.php(821):   照亮\路由\ RouteCollection->匹配(对象(照亮\ HTTP \请求))

     

...