在我的用例中,我想显示(开发时)我的php应用程序中抛出的异常。
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
throw new Exception();
这样可行。当我抛出一个异常时,我会在apache的http响应中(在返回的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-response的html部分了。因此,当我执行我的http请求时,它不会显示在我的浏览器中。
如何使用Monolog记录我的异常,并且仍然显示"它们?
答案 0 :(得分:3)
您需要添加自己的异常处理程序。
例如:
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');
...