2016-06-20 20 views
0

我想郵寄CakePHP 3中的所有錯誤或異常。 哪一個解決方案是正確的?如何發送所有異常?

  1. 寫新的日誌引擎
  2. 編寫新的錯誤處理程序
+0

寫一個錯誤處理程序。 – burzum

+0

@burzum我可以註冊多個ErrorHandler嗎? – atkrad

回答

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('[email protected]') 
       ->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); 
     } 
    } 
} 

,打造 「錯誤」 的模板:

// In src/Template/Email/html/bug.ctp 
<h1><?= $exception->getMessage() ?></h1> 

<p> 
    <?= nl2br($exception->getTraceAsString()) ?> 
</p> 
相關問題