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:
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()
?
Monolog is the existing standard logging library for PHP. It is most popular in PHP frameworks such as Laravel and Symfony, where it implements a common interface for logging libraries.
Monolog. Symfony integrates seamlessly with Monolog, the most popular PHP logging library, to create and store log messages in a variety of different places and trigger various actions.
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();
I also wanted to preserve the default behaviour, i.e., error messages in the response. Just receiving blank pages (which happens at least with Monolog 1 and PHP 7.2) is not very intuitive, at least during development. My solution was to add the following handler:
$log->pushHandler(new Monolog\Handler\StreamHandler("php://output", Monolog\Logger::ERROR));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With