W CodeIgniter, jak Mogę mieć Komunikaty o błędach PHP wysyłane do mnie e-mailem?

Chcę otrzymywać dzienniki błędów za pośrednictwem poczty e-mail. Na przykład, Jeśli pojawi się komunikat o błędzie Warning-level, chcę otrzymać wiadomość e-mail na ten temat.

Jak to działa w CodeIgniter?

Author: Jonathan Leffler, 2008-11-04

5 answers

Możesz rozszerzyć klasę Exception core, aby to zrobić.

Może być konieczne dostosowanie referencji do klasy E-mail CI, nie wiem, czy możesz utworzyć instancję z biblioteki takiej jak ta. Sam nie korzystam z klasy mailowej CI, korzystam z biblioteki Swift Mailer. Ale to powinno doprowadzić cię na właściwą drogę.

Utwórz plik MY_Exceptions.php i umieścić go w / application / libraries /(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);
    }

}
 16
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-26 11:10:11

Jedną z rzeczy, która została pominięta w rozwiązaniu, jest to, że musisz chwycić super obiekt CodeIgniters, aby załadować i użyć biblioteki e-mail (lub dowolnej innej biblioteki CodeIgniters i funkcji natywnych).

$CI =& get_instance();

Po tym, jak to zrobisz, używasz $CI zamiast $this, aby załadować bibliotekę e-mail i ustawić wszystkie parametry. Aby uzyskać więcej informacji Kliknij tutaj i zajrzyj pod wykorzystanie zasobów CodeIgniter w sekcji Biblioteka.

 3
Author: Jon Terry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-31 17:23:10

Oh, inną opcją jest uzyskanie aplikacji logrotation, która obsługuje wysyłanie wiadomości e-mail. Nie wiem, na jakiej platformie się znajdujesz, ale możesz po prostu mieć coś monitorującego plik error_log i wysyłającego Ci aktualizacje, może nie być tak schludny, a na pewno będziesz ograniczony tylko do informacji w error_log. (error_log to Apache, CI ma folder/ logs / w systemie, a IIS ma zdarzenia Windows)

 0
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-04 02:43:16

Właśnie zamierzam wydać projekt open source, który robi to i więcej. Zbiera błędy, wysyła je do śledzenia problemów, wykrywa duplikaty, zamienia je w problemy i e-maile.

Szczegóły są na https://sourceforge.net/news/?group_id=317819&id=293422 A wersja 0.1.7, o której wspomina, ma się ukazać za kilka dni.

The open source tracker is at http://elastik.sourceforge.net/

Wszelkie opinie mile widziane, dzięki

 0
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-16 20:10:21

Skonfigurowałem open source projekt github, aby zaimplementować to rozwiązanie z konfigurowalnymi parametrami poczty e-mail.

 0
Author: Mike Funk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-01 15:52:15