У меня есть приложение ZF 3. Сообщения, которые я регистрирую явно, например, $log->debug(), отображаются нормально. Исключения не делают. Кажется, ошибки появляются, потому что это конфигурация php по умолчанию для перехода на stderr. Вот соответствующие строки из файла groups.config.php:
'service_manager' => [
'factories' => [
. . . .
'log' => \Zend\Log\LoggerServiceFactory::class,
],
],
'log' => [
'writers' => [
[
'name' => 'stream',
'options' => [ 'stream' => 'php://stderr' ]
],
],
'errorHandler' => true,
'exceptionhandler' => true,
],
Строки в исходном коде, которые заставляют меня поверить, что это правильная конфигурация.
if (isset($options['exceptionhandler']) && $options['exceptionhandler'] === true) {
static::registerExceptionHandler($this);
}
if (isset($options['errorhandler']) && $options['errorhandler'] === true) {
static::registerErrorHandler($this);
}
Чтобы проверить это, я сделал следующие конечные точки:
public function errorAction()
{
$msg = $this->params()->fromQuery('msg', 'Default Error message');
trigger_error('Index Error Action' . $msg, E_USER_ERROR);
$model = new JsonErrorModel(['msg' => $msg]);
return $model;
}
public function exceptionAction()
{
$msg = $this->params()->fromQuery('msg', 'Default Error message');
throw new \RuntimeException('Index Exception Action' . $msg);
$model = new JsonErrorModel(['msg' => $msg]);
return $model;
}
Подробнее здесь: https://stackoverflow.com/questions/426 ... -correctly