Logger не регистрирует исключения, выданные в приложении - PullRequest
0 голосов
/ 07 апреля 2019

Я использую конфигурацию ниже, чтобы создать регистратор:

'log' => [
    'logger' => [
        'writers' => [
            'stream' => [
                'name' => 'stream',
                'priority' => \Zend\Log\Logger::INFO,
                'options' => [
                    'stream' => __DIR__ . '/../../data/log/name_' . date("Ym") . '.log',
                    'formatter' => [
                        'name' => \Zend\Log\Formatter\Simple::class,
                        'options' => [
                            'format' => '%timestamp% %priorityName% : %message% %extra%',
                            'dateTimeFormat' => 'c',
                        ],
                    ],

                ],
            ],
        ],
        'processors' => [
            'requestid' => [
                'name' => \Zend\Log\Processor\RequestId::class,
            ],
            'backtrace' => [
                'name' => \Zend\Log\Processor\Backtrace::class,
            ],
        ],
    ],
],

Журнал работает нормально, но ошибка php нигде не регистрируется.

Почему?

Я использую этот код для генерации простой ошибки

$d1 = new DateTime();
$d2 = new DateTime();
$a = array($d1,$d2);
$a->format("Y-m-d");

в моем классе контроллеров.

Эта ошибка не регистрируется

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

zend-log по умолчанию не является исключением или обработчиком ошибок. Вы должны установить это, чтобы сделать это. Вы можете использовать обработчик исключений , обработчик ошибок и fatal_error_shutdownfunction , чтобы установить его. Все ключи конфигурации принимают логическое значение. Вот пример. Я не проверял это, но должно быть так.

'log' => [
    'logger' => [
        'writers' => [
            'stream' => [
                'name' => 'stream',
                'priority' => \Zend\Log\Logger::INFO,
                'options' => [
                    'exceptionhandler' => true,
                    'errorhandler' => true,
                    'stream' => __DIR__ . '/../../data/log/name_' . date("Ym") . '.log',
                    'formatter' => [
                        'name' => \Zend\Log\Formatter\Simple::class,
                        'options' => [
                            'format' => '%timestamp% %priorityName% : %message% %extra%',
                            'dateTimeFormat' => 'c',
                        ],
                    ],
                ],
            ],
        ],
        'processors' => [
            'requestid' => [
                'name' => \Zend\Log\Processor\RequestId::class,
            ],
            'backtrace' => [
                'name' => \Zend\Log\Processor\Backtrace::class,
            ],
        ],
    ],
],
0 голосов
/ 07 апреля 2019

В PHP 7 есть класс ошибок для определения фатальной ошибки

}catch(\Error $err){
    $this->log->err($err->getMessage());

Класс ошибок

...