2016-06-20 11 views
0

Ich möchte alle Fehler oder Ausnahmen in CakePHP 3 mailen. Welche der Lösungen sind richtig?Wie kann ich alle Ausnahmen mailen?

  1. schreiben neue Protokoll Motor
  2. Handler neue Fehler schreiben
+0

einen Fehlerhandler schreiben. – burzum

+0

@burzum Kann ich mehr als einen ErrorHandler registrieren? – atkrad

Antwort

0

ich benutzerdefinierte Fehlerhandler geschrieben und es registrieren.

// 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); 
     } 
    } 
} 

Und erstellen "Bug" Vorlage:

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

<p> 
    <?= nl2br($exception->getTraceAsString()) ?> 
</p>