我想邮寄CakePHP 3中的所有错误或异常。 哪一个解决方案是正确的?
答案 0 :(得分:0)
我编写了自定义错误处理程序并注册它。
// In config/bootstrap.php
namespace App\Error;
use Cake\Error\ErrorHandler;
use Cake\Mailer\Email;
/**
* AppError
*
* @package App\Error
*/
class AppError extends ErrorHandler
{
/**
* {@inheritdoc}
*/
protected function _displayException($exception)
{
parent::_displayException($exception);
try {
$email = new Email('default');
$email->to('bug@example.com')
->emailFormat(Email::MESSAGE_HTML)
->subject('Bug !!!')
->template('bug')
->set(['exception' => $exception])
->send();
} catch (Exception $e) {
// Disable trace for internal errors.
$this->_options['trace'] = false;
$message = sprintf(
"[%s] %s\n%s", // Keeping same message format
get_class($e),
$e->getMessage(),
$e->getTraceAsString()
);
trigger_error($message, E_USER_ERROR);
}
}
}
创建“bug”模板:
// In src/Template/Email/html/bug.ctp
<h1><?= $exception->getMessage() ?></h1>
<p>
<?= nl2br($exception->getTraceAsString()) ?>
</p>