独白:处理程序,用于捕获错误/异常并在响应中输出消息(根据PHP默认值)


Monolog: Handler to catch errors/exceptions and output the messages in the response (as per PHP default)

我如何配置在响应中输出PHP错误,就像没有独白一样?

我想做的是,例如,当PHP页面中发生PHP E_ERROR时,该错误消息将输出到响应中,并传递给为独白设置的任何其他处理程序。

AFAIK,我可能会使用StreamHandler并将其输出到stdout,但不知道如何做到这一点,或者它是否会按预期工作?

我希望有两个选项:

  1. 独白在将错误消息输出到响应
  2. 之前重新格式化错误消息
  3. 独白将错误(或异常)中继回PHP本地错误处理,以便它在响应中以相同的格式输出消息,就好像独白没有调解它

我怎样才能做到这些呢?我甚至不知道如何让独白注册自己作为异常和错误的处理程序。我是否需要编写自己的函数来传递给register_error_handler(), register_exception_handler()register_shutdown_function() ?

短版:

use Monolog'ErrorHandler;
$logger = new Logger('Logger Name');
ErrorHandler::register($logger);

更长,更可定制的版本:

use Monolog'ErrorHandler;
$logger = new Logger('Logger Name');
$handler = new ErrorHandler($logger);
$handler->registerErrorHandler([], false);
$handler->registerExceptionHandler();
$handler->registerFatalHandler();

我还想保留默认行为,即响应中的错误消息。仅仅接收空白页(至少在独白1和PHP 7.2中发生)不是很直观,至少在开发期间是这样。我的解决方案是添加以下处理程序:

$log->pushHandler(new Monolog'Handler'StreamHandler("php://output", Monolog'Logger::ERROR));