Enviar el log de errores de PHP por email

Tener noticias de los errores que puedan surgir en una web, sobretodo cuando acaba de ser puesta en producción y necesita una atención especial para confirmar que todo funciona bien, o cuando se acaba de realizar algún cambio en el servidor, puede ser un punto muy importante.

Para recibir los errores por email, hay que hacer dos cosas:

  1. Preparar una función con las instrucciones en caso de ocurrir un error.
  2. Decirle a PHP que tiene que ejecutar la función creada cuando sucedan errores.

La primera parte, la función, sería algo así

function errorPersonalizado($numeroerror, $cadenaerror){
    echo "<div><strong>Error:</strong> [$numeroerror] $cadenaerror</div>";
    error_log("Error: [$numeroerror] $cadenaerror",1,"webmaster@elsitio.net","From: logerrores@elsitio.net");
}

La segunda parte, donde se le dice a PHP que tiene que ejecutar la función errorPersonalizado cuando ocurran errores, es sólo una linea:

set_error_handler("errorPersonalizado");

Por defecto, set_error_handler ejecuta error_log().

Personalmente, creo que la mejor idea para controlar el log de errores en cada caso es…

  • Para webs/aplicaciones en producción: No mostrar los errores en la misma página, por seguridad; y guardarlos en un archivo de logs que vaya «rotando» para que no acabe dando problemas cuando alcance tamaños complicados para el sistema de archivos. Los errores se pueden ocultar usando error_reporting(0).
  • Cuando se está desarrollando, lo más cómodo es tener los errores bien visibles, que aparezcan en la misma página cuando sucedan (este es el comportamiento por defecto).
  • Cuando cualquier tipo de error puede ser importante, lo mejor es utilizar este pequeño truco para enviar los errores por email y así mantenernos informados con más frecuencia, normalmente esto no es necesario cuando la programación está en desarrollo.

Más información en la documentación oficial de PHP y en w3schools.

http://www.w3schools.com/php/php_error.asp

Comentarios (0)

No hay comentarios. Sé el primero en comentar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.