Publicidad

Clase para guardar errores en PHP


Por Alex el 08/12/2013, Comentarios: 3

Comparte este artículo:      




Con esta clase los errores de PHP se irán guardando en un fichero a través de la función de PHP error_log cada vez que se produzcan en las páginas php y podremos saber en que linea y que punto tenemos un error.


Para utilizar la clase hay que incluirla en nuestra aplicación y definir una ruta para el fichero de errores de la siguiente manera:

$rutaLogs = "/home/depruebas/wwwroot/web/files/logs/";
require_once "CustomErrorLog.php";
rutaLogs tiene que tener permisos 777.

La clase se pone en marcha y empieza a capturar errores cuando se instancia la clase:

$el = new CustomErrorLog();
Actualmente esta linea esta puesta al final del fichero de la clase.

¿Como funciona? set_error_handler define una funcion de usuario donde se apraparan los errores. En nuestra clase tenemos la siguiente funcion definida

set_error_handler( array( &$this, 'customError'));
public function customError($errno, $errstr, $errfile, $errline)
Con los siguientes argumentos

$errno, el el numero de error.
$errstr, es el texto del error.
$errfile, fichero donde se ha producido el error.
$errline, linea donde se ha producido el error.


Utilizamos tambien la función

$debug = debug_backtrace(); 
para obtener la linea y fichero desde donde viene el error. register_shutdown_function, se ejecuta cuando finaliza un escript ya sea por un die, exit o por un error. En nuestro caso definimos un método por si la llamada a esta funcion la realiza un error:

register_shutdown_function( array( &$this, 'CatchFatalError'));
public function CatchFatalError()
En este método obtendremos el ultimo error generado

$error = error_get_last();
Si lo hay y lo guardaremos en el fichero de errores. Para probar la clase podemos probar este script:


    $rutaLogs = "/home/depruebas/wwwroot/web/files/logs/";
require_once "CustomErrorLog.php";

print_r ($r);
El codigo lo podeis encontrar en github, customerrorlog

Y esto es todo amigos!!! Saludos
Alex



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)

avatar

Alex 12/03/2020 10:59:04

Hola

Bueno, has de añadir las funciones de base de datos y en lugar de utilizar errorlog deberías poner una llamada a una base de datos.
Puedes revisar estos artículos que son clases para acceso a datos

https://www.netveloper.com/clase-para-gestionar-las-conexiones-y-datos-al-mysql
https://www.netveloper.com/pdo-php-clase-acceso-a-dartos-pdoclass

Saludos
Alex

avatar

Yandry 12/03/2020 10:54:33

Una pregunta, como puedo registrar el error en vez de guardarlo en un txt guardarlo en una tabla de la base de dato ?

avatar

felip 12/08/2018 06:30:11

Gracias me fue de utilidad encontrar está información.

saludos cordiales.




SIGUENOS EN

ARCHIVO

Publicidad

.