Dans CodeIgniter, comment puis-je recevoir des messages d'erreur PHP par courrier électronique?

StackOverflow https://stackoverflow.com/questions/260597

Question

Je souhaite recevoir les journaux d'erreurs par courrier électronique. Par exemple, si un message d'erreur Warning-level doit apparaître, je souhaite recevoir un courrier électronique à ce sujet.

Comment puis-je obtenir que cela fonctionne dans CodeIgniter?

Était-ce utile?

La solution

Vous pouvez étendre la classe principale Exception pour le faire.

Peut-être devrez-vous ajuster la référence à la classe de courrier électronique de CI, sans savoir si vous pouvez l'instancier à partir d'une bibliothèque comme celle-ci. Je n'utilise pas moi-même la classe de messagerie de CI, j'ai utilisé la bibliothèque Swift Mailer. Mais cela devrait vous mettre sur la bonne voie.

Créez un fichier MY_Exceptions.php et placez-le dans / application / libraries / (ou dans / application / core / for 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);
    }

}

Autres conseils

Une chose qui reste en dehors de la solution est que vous devez saisir le super objet CodeIgniters pour charger et utiliser la bibliothèque de courrier électronique (ou n’importe laquelle des autres bibliothèques et fonctions natives de CodeIgniters).

$CI =& get_instance();

Une fois que vous avez terminé, utilisez $ CI au lieu de $ this pour charger la bibliothèque de messages et définir tous les paramètres. Pour plus d'informations, cliquez ici et regardez sous Utilisation des ressources CodeIgniter dans votre bibliothèque. section.

Oh, une autre option consiste à obtenir une application logrotation prenant en charge les résumés envoyés par courrier électronique. Vous ne savez pas exactement sur quelle plate-forme vous vous trouvez, mais vous pourriez simplement demander à quelque chose de surveiller le fichier error_log et de vous envoyer des mises à jour, elle pourrait ne pas être aussi nette et vous seriez certainement limité aux seules informations contenues dans error_log. (error_log est Apache, CI possède un dossier / logs / dans le système et IIS contient les événements Windows)

Je suis sur le point de publier un projet open source qui fait cela, et plus encore. Il collecte les erreurs, les envoie à un système de suivi des problèmes, détecte les doublons, les transforme en problèmes et en envoyant du courrier électronique au personnel.

Les détails figurent à l'adresse https://sourceforge.net/news/?group_id=317819&id. = 293422 et la version 0.1.7 qu’il mentionne doit paraître dans quelques jours.

Le traqueur Open Source se trouve à l'adresse http://elastik.sourceforge.net/

.

Tous les commentaires sont les bienvenus, merci

J'ai mis en place un projet open source github pour implémenter cette solution avec des paramètres configurables. paramètres de messagerie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top