Tiempo de lectura: 2 minutos
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:
// 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');
$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');
$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;
$cadenaError = $color . $cadenaError . $sinColor;
file_put_contents('php://stdout', $cadenaError . "\n");
<?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");
}
<?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');
$autoload['helper'] = array('url', 'error_logging');
$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, Investigador, 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.
Post Views: 1
Relacionado