2008-11-04 4 views

Antwort

16

Sie könnten die Exception-Kernklasse erweitern, um dies zu tun.

Müssen möglicherweise den Verweis auf CI E-Mail-Klasse anpassen, nicht sicher, ob Sie es aus einer Bibliothek wie folgt instanziieren können. Ich verwende die E-Mail-Klasse von CI nicht selbst. Ich habe die Swift Mailer-Bibliothek verwendet. Aber das sollte dich auf den richtigen Weg bringen.

Machen Sie eine Datei MY_Exceptions.php und legen Sie sie in/application/Bibliotheken/(Oder/application/Kern/CI 2)

class MY_Exceptions extends CI_Exceptions { 

    function __construct() 
    { 
     parent::__construct(); 
    } 

    function log_exception($severity, $message, $filepath, $line) 

    { 
     if (ENVIRONMENT === 'production') { 
      $ci =& get_instance(); 

      $ci->load->library('email'); 
      $ci->email->from('[email protected]', 'Your Name'); 
      $ci->email->to('[email protected]'); 
      $ci->email->cc('[email protected]'); 
      $ci->email->bcc('[email protected]'); 
      $ci->email->subject('error'); 
      $ci->email->message('Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line); 
      $ci->email->send(); 
     } 


     parent::log_exception($severity, $message, $filepath, $line); 
    } 

} 
+0

Korrektur auf dem oben genannten, müssen pluralisieren Ausnahmen. MY_Exceptions.php Klasse MY_Exceptions erstreckt CI_Exceptions { \t Funktion My_Exceptions() { \t \t \t parent :: CI_Exceptions(); \t} ... (unter Verwendung von CI-Version 1.7.1) – Jay

+0

habe ich versucht, die gleiche, aber E-Mail sendet, nicht ... Ich habe es getestet von '$ Ändern von Daten [ "query_root_menu"] = $ t' in '$ dataA [" query_root_menu "] = $ t' Bitte helfen Sie mir auch, es ist sehr notwendig für mich, dies zu lernen –

0

Oh, eine weitere Option ist es, eine Logrotation Anwendung, die Träger erhalten Versenden von E-Mails. Nicht sicher, auf welcher Plattform Sie sich befinden, aber Sie könnten einfach etwas haben, um die Datei error_log zu überwachen und Ihnen Updates zukommen zu lassen, die vielleicht nicht so ordentlich sind und sicherlich wären Sie nur auf Informationen in der error_log beschränkt. (error_log ist Apache, CI hat einen/logs/Ordner im System, und IIS hat die Windows Ereignisse)

3

Eine Sache, die aus der Lösung ist, ist, dass Sie CodeIgniters super Objekt ergreifen müssen, um die E-Mail zu laden und zu verwenden Bibliothek (oder eine andere CodeIgniters andere Bibliotheken und native Funktionen).

$CI =& get_instance(); 

Nachdem Sie das getan haben, Sie $CI anstelle von $this die E-Mail-Bibliothek zu laden und alle Parameter eingestellt. Weitere Informationen finden Sie unter click here und sehen Sie unter der Verwendung von CodeIgniter Ressourcen in Ihrer Bibliothek Abschnitt.

0

Ich bin gerade dabei, ein Open-Source-Projekt zu veröffentlichen, das dies und mehr tut. Es sammelt Fehler, sendet sie an einen Issue Tracker, erkennt Duplikate, verwandelt sie in Probleme und E-Mail-Mitarbeiter.

Details sind unter https://sourceforge.net/news/?group_id=317819&id=293422 und die Version 0.1.7 es erwähnt wird in wenigen Tagen fällig.

Der Open-Source-Tracker ist bei http://elastik.sourceforge.net/

Jedes Feedback willkommen, Dank

Verwandte Themen