Laravel异常管理及邮件通知
2018-10-16 本文已影响7人
禹声
本文两部分异常管理和异常的邮件通知。
异常的讲解在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
中配置邮件。
还有就是最好把邮箱设成白名单,不然容易被当作垃圾邮件。