Laravel异常管理及邮件通知

本文两部分异常管理和异常的邮件通知。
异常的讲解在Laravel的异常处理及应用

1、异常管理

Laravel出现了异常仅仅是记在日志中,如果去查看日志倒是也可以。但是看起来很不方便。所以就搞一个日志管理喽,方便查看。

//修改config\app.php中  
//日志类型
    'log' => 'daily',
//日志最大天数
    'log_max_files' => 30,
    'log_level' => env('APP_LOG_LEVEL', 'debug'),
//这个是为了在日志管理的时候可以按天进行管理很方便。
//安装依赖
composer require arcanedev/log-viewer
//config\app.php 的providers阵列中注册服务
Arcanedev\LogViewer\LogViewerServiceProvider::class,
//发布配置文件
php artisan log-viewer:publish

如果想直接使用,就访问:域名/log-viewer就可以进入页面了。
但是问题是这个日志管理至少要有一个登陆限制吧,并且按照自己的规则去写路由?
编辑config/log-viewer.php配置文件

    /* -----------------------------------------------------------------
     |  Route settings
     | -----------------------------------------------------------------
     */

    'route'         => [
//这个一定要是true,才是使用路由
        'enabled'    => true,

        'attributes' => [
//这个就可以自定义路由了
            'prefix'     => 'admin/log',
//切记这个不仅仅要加上auth,还要加上web中间件。不然是进不去的。
            'middleware' => ['web', 'auth'],
        ],
    ],

如果想修改页面的话文件在resources/views/vendor/log-viewer里面。

只能记录修改之后发生的异常哈,可以吧路由删除一半,然后运行代码就会出现异常。之后改好再去查看log-viewer就能看到了。

2、邮件通知

//创建Mail类
php artisan make:mail LogMail

之后在全局的捕获中进行发送邮件操作

此处获取的getHtml($e);在Laravel的异常处理及应用中提到过,获取日常开发中异常显示页面。

...
use Symfony\Component\Debug\ExceptionHandler as SymfonyExceptionHandler;
...
 public function report(Exception $exception)
    {
        if ('正是环境') {
            $this->sendMail($exception);
        }

        parent::report($exception);
    }

    public function sendMail(Exception $exception)
    {
        try {
            $e = FlattenException::create($exception);

            $handler = new SymfonyExceptionHandler();
            $html = $handler->getHtml($e);

            Mail::to('***@***.com')->send(new LogMail($html));
        } catch (Exception $ex) {
            dd($ex);
        }
    }

编写有LogMail类

protected $html;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($html)
    {
        $this->html = $html;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.logs')->with('html', $this->html);
    }

切记在.env中配置邮件。
还有就是最好把邮箱设成白名单,不然容易被当作垃圾邮件。

你可能感兴趣的:(Laravel异常管理及邮件通知)