Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Mostrar errores por consola y consola Docker con Codeigniter y PHP

Tiempo de lectura: 2 minutos
Luna - Pexels

Para integrar este código en CodeIgniter y asegurarte de que todos los errores se registren en la consola, puedes seguir estos pasos:

  1. 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.
  2. 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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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"); }
<?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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$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ó.

0

Deja un comentario