Para integrar este código en CodeIgniter y asegurarte de que todos los errores se registren en la consola, puedes seguir estos pasos:
- Crear un archivo de helper o library en CodeIgniter:
Puedes colocar tu código en un archivo helper o library. En este ejemplo, crearé un helper. - Registrar el helper en tu controlador base o en un hook:
Esto asegurará que el helper se cargue en todas las solicitudes.
Paso 1: Crear el Helper
Crea un archivo llamado error_logging_helper.php
en la carpeta application/helpers
. Añadiremos este código que tiene un interceptor de errores:
<?php // Función para manejar excepciones function manejarExcepcion($excepcion) { $mensaje = 'ERR: Se ha producido un error en el sitio web.' . "\n\n"; $mensaje .= 'ERR: Mensaje de error: ' . $excepcion->getMessage() . "\n"; $mensaje .= 'ERR: Archivo: ' . $excepcion->getFile() . "\n"; $mensaje .= 'ERR: Línea: ' . $excepcion->getLine() . "\n"; $mensaje .= 'ERR: Código de estado HTTP: ' . http_response_code() . "\n"; $mensaje .= "\nLlamada a: " . $_SERVER['REQUEST_URI']; $body = file_get_contents('php://input'); if ($body != "") { $mensaje .= "\nBody: " . json_encode($body); } $headers = getallheaders(); foreach ($headers as $header => $value) { if (in_array(strtolower($header), ['x-auth-token', 'authorization'])) { $value = str_replace('Bearer ', '', $value); $mensaje .= "\nToken: " . $value; } } logConsola($mensaje, "\033[91m"); // Rojo brillante } // Establecer la función de manejo de excepciones personalizada set_exception_handler('manejarExcepcion'); set_error_handler(function ($severity, $message, $file, $line) { $mensaje = 'ERR: Se ha producido un error en el sitio web.' . "\n\n"; $mensaje .= 'ERR: Mensaje de error: ' . $message . "\n"; $mensaje .= 'ERR: Archivo: ' . $file . "\n"; $mensaje .= 'ERR: Línea: ' . $line . "\n"; $mensaje .= 'ERR: Código de estado HTTP: ' . http_response_code() . "\n"; $mensaje .= "\nLlamada a: " . $_SERVER['REQUEST_URI']; $body = file_get_contents('php://input'); if ($body != "") { $mensaje .= "\nBody: " . json_encode($body); } $headers = getallheaders(); foreach ($headers as $header => $value) { if (in_array(strtolower($header), ['x-auth-token', 'authorization'])) { $value = str_replace('Bearer ', '', $value); $mensaje .= "\nToken: " . $value; } } logConsola($mensaje, "\033[91m"); // Rojo brillante }); function logConsola($mensaje, $color = "\033[32m") // Verde brillante por defecto { $fechaActual = date('Y-m-d H:i:s'); $cadenaError = $fechaActual . " IP: [" . $_SERVER['HTTP_X_REAL_IP'] . "] " . $mensaje; $sinColor = "\033[0m"; $cadenaError = $color . $cadenaError . $sinColor; file_put_contents('php://stdout', $cadenaError . "\n"); }
Paso 2: Cargar el Helper en CodeIgniter
Para cargar tu helper en todas las solicitudes, edita el archivo application/config/autoload.php
y añade tu helper al array autoload
:
$autoload['helper'] = array('url', 'error_logging');
Paso 3: Verificar que el log funcione
Para verificar que los errores se están registrando en la consola, puedes provocar un error deliberado en tu aplicación y comprobar los logs de la consola.
Con estos pasos, tu aplicación CodeIgniter debería registrar todos los errores en la consola, con información detallada sobre el error y la solicitud que lo provocó.
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.