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

CL22 picture CL22 · Sep 21, 2015 · Viewed 9.1k times · Source

How can I configure Monolog to output PHP errors within the response, as would have been done without Monolog?

What I want to do is when, for example, a PHP E_ERROR occurs within a PHP page, that error message will be output to the response, and also passed to any other Handlers set for Monolog.

AFAIK, I might use StreamHandler and have it output to stdout, but don't know how to do this or if it will work as expected?

There are two variations I'd like the option of:

  1. Monolog re-formats the error message before having it output within the response
  2. Monolog relays the error (or exception) back to PHP native error handling so that it outputs the message in the same format in the response as if Monolog was not mediating it

How could I achieve these? I don't even know how I can get Monolog to register itself as a handler for exceptions and errors. Would I need to write my own functions to pass to register_error_handler(), register_exception_handler() and register_shutdown_function()?

Answer

Loupax picture Loupax · Apr 20, 2016

Short version:

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

ErrorHandler::register($logger);

Longer, more customizable version:

use Monolog\ErrorHandler;

$logger = new Logger('Logger Name');

$handler = new ErrorHandler($logger);
$handler->registerErrorHandler([], false);
$handler->registerExceptionHandler();
$handler->registerFatalHandler();