当我使用Monolog的ExceptionHandler时,如何显示异常?

时间:2015-04-10 12:46:57

标签: php monolog

在我的用例中,我想显示(开发时)我的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记录我的异常,并且仍然显示"它们?

1 个答案:

答案 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');
...