Pregunta

Me gustaría recibir registros de errores por correo electrónico. Por ejemplo, si aparece un mensaje de error Nivel de advertencia , me gustaría recibir un correo electrónico al respecto.

¿Cómo puedo hacer que eso funcione en CodeIgniter?

¿Fue útil?

Solución

Puede extender la clase principal Exception para hacerlo.

Puede que tenga que ajustar la referencia a la clase de correo electrónico de CI, no estoy seguro de si puede crear una instancia desde una biblioteca como esta. Yo no uso la clase de correo electrónico de CI, he estado usando la biblioteca Swift Mailer. Pero esto debería llevarte por el camino correcto.

Cree un archivo MY_Exceptions.php y colóquelo en / application / collections / (O en / application / core / para 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);
    }

}

Otros consejos

Una cosa que queda fuera de la solución es que tiene que tomar el súper objeto CodeIgniters para cargar y usar la biblioteca de correo electrónico (o cualquiera de las otras bibliotecas y funciones nativas de CodeIgniters).

$CI =& get_instance();

Una vez que haya hecho esto, use $ CI en lugar de $ this para cargar la biblioteca de correo electrónico y establecer todos los parámetros. Para obtener más información haga clic aquí y busque debajo de Utilizando recursos CodeIgniter dentro de su biblioteca sección.

Oh, otra opción es obtener una aplicación de rotación de registros que admita resúmenes de correo electrónico. No estoy seguro de en qué plataforma se encuentra, pero podría simplemente hacer que algo monitoree el archivo error_log y le envíe actualizaciones, podría no ser tan ordenado y ciertamente estaría limitado a solo información en el error_log. (error_log es Apache, CI tiene una carpeta / logs / en el sistema e IIS tiene los eventos de Windows)

Estoy a punto de lanzar un proyecto de código abierto que hace esto, y más. Recopila errores, los envía a un rastreador de problemas, detecta duplicados, los convierte en problemas y envía correos electrónicos al personal.

Los detalles se encuentran en https://sourceforge.net/news/?group_id=317819&id = 293422 y la versión 0.1.7 que menciona se lanzará en un par de días.

El rastreador de código abierto está en http://elastik.sourceforge.net/

Cualquier comentario de bienvenida, gracias

Configuré un proyecto de código abierto de github para implementar esta solución con configurable parámetros de correo electrónico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top