$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
También puede interesarte:
Configurar Laravel Sail para utilizar un MySql externo existente |
||
Añadir un comentarios:
Alex 12/03/2020 10:59:04Hola
|
|
Yandry 12/03/2020 10:54:33Una pregunta, como puedo registrar el error en vez de guardarlo en un txt guardarlo en una tabla de la base de dato ? |
|
felip 12/08/2018 06:30:11Gracias me fue de utilidad encontrar está información.
|