Domanda

Vorrei ricevere i log degli errori via e-mail. Ad esempio, se dovesse apparire un messaggio di errore a livello di avviso , vorrei ricevere un'email al riguardo.

Come posso farlo funzionare in CodeIgniter?

È stato utile?

Soluzione

È possibile estendere la classe principale di eccezione per farlo.

Potrebbe essere necessario modificare il riferimento alla classe di posta elettronica di CI, non sono sicuro di poterlo istanziare da una libreria come questa. Io stesso non uso la classe di posta elettronica di CI, sto usando la libreria Swift Mailer. Ma questo dovrebbe portarti sulla strada giusta.

Crea un file MY_Exceptions.php e posizionalo in / application / libraries / (O in / application / core / per 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('your@example.com', 'Your Name');
            $ci->email->to('someone@example.com');
            $ci->email->cc('another@another-example.com');
            $ci->email->bcc('them@their-example.com');
            $ci->email->subject('error');
            $ci->email->message('Severity: '.$severity.'  --> '.$message. ' '.$filepath.' '.$line);
            $ci->email->send();
        }


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

}

Altri suggerimenti

Una cosa che viene lasciata fuori dalla soluzione è che devi afferrare il super oggetto CodeIgniters per caricare e usare la libreria e-mail (o una qualsiasi delle altre librerie e funzioni native di CodeIgniters).

$CI =& get_instance();

Dopo aver utilizzato $ CI invece di $ this per caricare la libreria e-mail e impostare tutti i parametri. Per ulteriori informazioni fai clic qui e consulta la Utilizzo delle risorse CodeIgniter nella tua libreria .

Oh, un'altra opzione è quella di ottenere un'applicazione di logrotazione che supporti i digest via e-mail. Non sei sicuro di quale piattaforma ti trovi, ma potresti semplicemente avere qualcosa che monitora il file error_log e ti invia aggiornamenti, potrebbe non essere così pulito e certamente saresti limitato alle sole informazioni nel error_log. (error_log è Apache, CI ha una cartella / logs / nel sistema e IIS ha gli eventi di Windows)

Sto per rilasciare un progetto open source che fa questo e altro. Raccoglie errori, li invia a un tracker di problemi, rileva duplicati, li trasforma in problemi e invia email al personale.

I dettagli sono disponibili all'indirizzo https://sourceforge.net/news/?group_id=317819&id = 293422 e la versione 0.1.7 menzionata è prevista tra un paio di giorni.

Il tracker open source è all'indirizzo http://elastik.sourceforge.net/

Qualsiasi feedback benvenuto, grazie

Ho impostato un progetto github open source per implementare questa soluzione con configurabile parametri email.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top