2008-11-04 13 views

Odpowiedz

16

Możesz rozszerzyć klasę jądra Exception, aby to zrobić.

Może być konieczne dostosowanie odwołania do klasy wiadomości e-mail CI, ale nie jest pewne, czy można utworzyć instancję z takiej biblioteki. Nie używam samej klasy wiadomości e-mail CI, korzystam z biblioteki Swift Mailer. Ale powinno to doprowadzić cię na właściwą drogę.

Zrób MY_Exceptions.php pliku i umieścić go w katalogu/aplikacji/biblioteki/(lub w/application/core/dla 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

Korekta powyższego, wymaga odszukania wyjątków. MY_Exceptions.php klasy MY_Exceptions rozciąga CI_Exceptions { \t My_Exceptions funkcyjnych() \t { \t \t macierzystych :: CI_Exceptions(); \t} ... (używając CI wersji 1.7.1) – Jay

+0

Próbowałem to samo, ale nie wysyła email ... Ja testowałem to przez zmianę '$ dane [ "query_root_menu"] = $ t' do '$ dataA [" query_root_menu "] = $ t' Proszę, pomóżcie mi, jest to bardzo potrzebne, abym się tego nauczył –

0

Och, innym rozwiązaniem jest uzyskanie aplikacji logrotation który obsługuje wysyłanie e-maili na podsumowanie. Nie wiesz, na jakiej platformie jesteś, ale możesz po prostu monitorować plik error_log i wysyłać aktualizacje, może nie być tak porządny i na pewno byłbyś ograniczony tylko do informacji w error_log. (error_log to Apache, CI ma/logs/folder w systemie, a IIS ma zdarzenia Windows)

3

Jedną z rzeczy, których nie ma w rozwiązaniu, jest to, że musisz pobrać super obiekt CodeIgniters, aby załadować i użyć e-maila biblioteka (lub dowolna z CodeIgniters innych bibliotek i funkcji natywnych).

$CI =& get_instance(); 

Po wykonaniu skorzystanie $CI zamiast $this załadować bibliotekę e-mail i ustawić wszystkie parametry. Aby uzyskać więcej informacji, należy zapoznać się z rozdziałem click here i zapoznać się z artykułem Korzystanie z zasobów CodeIgniter w sekcji Biblioteka.