Я использую библиотеку ошибок Whoops (и мне это нравится) в dev, чтобы показать PrettyPageHandler следующим образом:
if (ENVIRONMENT == 'local') {
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}
В прямом эфире я использую CallbackHandler, чтобы показать конечному пользователю «дружественное пользователю» сообщение об ошибке.
Есть ли способ сохранить результат / вывод PrettyPageHandler в базу данных или даже в файловую систему? Я думаю показать конечному пользователю дружественную страницу ошибок, но в то же время записать ошибку, используя PrettyPageHandler, чтобы оглянуться назад и отладить ошибку, которую получил пользователь.
Как описано в документации:
$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, и в том месте, где дескриптор возвращает форматированный ответ, прежде чем вернуть ответ пользователю, сохраните его в базе данных или файловой системе в нужном формате.
Вы можете сделать что-то вроде этого:
<?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);