我在开发人员上使用Whoops错误库(并喜欢它)来显示PrettyPageHandler,如下所示:
if (ENVIRONMENT == 'local') {
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}
对于直播,我正在使用CallbackHandler向最终用户显示“用户友好”错误消息。
无论如何将PrettyPageHandler的结果/输出保存到数据库甚至文件系统中?我的想法是向最终用户显示友好的错误页面,但同时使用PrettyPageHandler记录错误,以回顾并调试用户得到的错误。
答案 0 :(得分:6)
如文档中所述:
$run->pushHandler(function($exception, $inspector, $run) {
var_dump($exception->getMessage());
return Handler::DONE;
});
用您的自定义代码替换var_dump($exception->getMessage());
以保存到数据库或文件日志。
https://github.com/filp/whoops/blob/master/docs/API%20Documentation.md#core-handlers-1
EDIT1:
要使用PrettyPageHandler保存日志,请创建一个从PrettyPageHandler扩展的自定义处理程序,并在句柄返回格式化响应之前将响应返回给用户,以所需格式保存在数据库或文件系统中。
答案 1 :(得分:1)
您可以执行以下操作:
<?php
class PrettyErrorLogger extends \Whoops\Handler\PrettyPageHandler
{
public function handle()
{
parent::handle();
$output = ob_get_clean();
file_put_contents('error.log', $output); // or replace with DB insert
}
}
然后将其用作处理程序
$whoops->pushHandler(new PrettyErrorLogger);