【发布时间】:2019-06-08 00:29:11
【问题描述】:
如何覆盖 Laravel/Monolog 格式化异常的方式?
现在他们是这样出来的:
Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'pay.booking_id' in 'where clause' (SQL: select `seg`.`id` as `segment_id`, ..*snip*.. in /srv/myproject/vendor/laravel/framework/src/Illuminate/Database/Connection.php:729
Stack trace:
#0 /srv/myproject/vendor/laravel/framework/src/Illuminate/Database/Connection.php(685): Illuminate\Database\Connection->runQueryCallback('select `seg`.`i...', Array, Object(Closure))
#1 /srv/myproject/vendor/laravel/framework/src/Illuminate/Database/Connection.php(349): Illuminate\Database\Connection->run('select `seg`.`i...', Array, Object(Closure))
#2 /srv/myproject/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1610): Illuminate\Database\Connection->select('select `seg`.`i...', Array, true)
#3 /srv/myproject/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1596): Illuminate\Database\Query\Builder->runSelect()
我想自己获取 Exception 对象并对其进行格式化(返回一个字符串)。我不想覆盖/重新实现日志的去向(什么文件)或任何类似性质的东西。
使用 Laravel 5.2。
【问题讨论】:
-
类似的建议在docs。
-
@Tpojka 这些都没有回答我的问题。是的,我可以捕获异常并用它做一些不同的事情,但这就是为什么我特别声明我不想处理文件处理,只是处理消息的格式。魔法隐藏在
parent::report中,它使用$log,我假设它是Monolog 的一个实例。但我不想覆盖整个 Monolog 对象,只是格式化程序。
标签: php laravel laravel-5.2 monolog