如何在使用 Monolog 的 ExceptionHandler 时显示异常?
How can I display an exception when I use Monolog's ExceptionHandler?
在我的用例中,我想显示(在开发时)在我的 php- 应用程序中抛出的异常。
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
throw new Exception();
这可以正常工作。当我抛出异常时,我将在我的 http-response 中从 apache 接收到它(在返回的 HTML 内)。
现在,我想使用 Monolog 进行日志记录。我集成了它,一切正常,例如,Monolog 将异常记录到文件中。
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
$exception_log = new Logger('exception');
\Monolog\ErrorHandler::register($exception_log, false, null, false);
...
throw new Exception();
但是,异常不再发送到 http 响应的 html 部分。因此,当我执行 http 请求时,它不会显示在我的浏览器中。
如何使用 Monolog 记录我的异常,并且仍然 "display" 它们?
您需要添加自己的异常处理程序。
例如:
function echo_exception_handler($e) {
echo sprintf('Uncaught Exception %s: "%s" at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
}
set_exception_handler('echo_exception_handler');
$exception_log = new Logger('exception');
...
在我的用例中,我想显示(在开发时)在我的 php- 应用程序中抛出的异常。
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
throw new Exception();
这可以正常工作。当我抛出异常时,我将在我的 http-response 中从 apache 接收到它(在返回的 HTML 内)。
现在,我想使用 Monolog 进行日志记录。我集成了它,一切正常,例如,Monolog 将异常记录到文件中。
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
$exception_log = new Logger('exception');
\Monolog\ErrorHandler::register($exception_log, false, null, false);
...
throw new Exception();
但是,异常不再发送到 http 响应的 html 部分。因此,当我执行 http 请求时,它不会显示在我的浏览器中。
如何使用 Monolog 记录我的异常,并且仍然 "display" 它们?
您需要添加自己的异常处理程序。
例如:
function echo_exception_handler($e) {
echo sprintf('Uncaught Exception %s: "%s" at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
}
set_exception_handler('echo_exception_handler');
$exception_log = new Logger('exception');
...