Cómo usar el sistema de logs de WooCommerce en tus plugins

WooCommerce ofrece un sistema de registros (logs) muy útil para registrar eventos, errores, respuestas de APIs u otros datos relevantes para la depuración. Este sistema está basado en la clase WC_Loggery es bastante flexible. En este artículo aprenderás cómo usarlo en tus desarrollos personalizados.

 

¿Por qué usar el sistema de logs de WooCommerce?

El sistema de logs de WooCommerce permite:

  • Registrar mensajes de depuración o errores.
  • Guardar respuestas de servicios externos (como pasarelas de pago).
  • Visualizar los registros directamente desde el panel de administración.
  • Mantener separados los logs de distintos componentes de WooCommerce.

 

Ubicación de los logs

Los archivos de log se almacenan en:

wp-content/uploads/wc-logs/

A partir de WooCommerce 3.4, los logs se manejan con la clase WC_Log_Handler_Filey se pueden visualizar desde el panel de administración en: WooCommerce > Estado > Registros

 

Cómo registrar mensajes en un log personalizado

Puedes usar la clase WC_Loggerpara escribir en los logs. Aquí un ejemplo básico:

<?php
function myPluginLogExample() {
    $logger = wc_get_logger();

    $context = [ 'source' => 'my-plugin' ];

    $logger->info( 'Este es un mensaje informativo.', $context );
    $logger->warning( 'Este es un mensaje de advertencia.', $context );
    $logger->error( 'Este es un mensaje de error.', $context );
}

 

Esto creará un archivo de log con el nombre:

log-my-plugin-[fecha].log

 

Cómo ver los logs

Desde el panel de administración:

  1. Ve a WooCommerce > Estado > Registros.
  2. Selecciona el archivo llamado my-plugin (o el nombre que hayas usado en source).
  3. Visualiza las entradas registradas.

 

Ejemplo práctico: Registrar errores en una llamada a API

Imagina que haces una llamada a una API externa y deseas registrar tanto la solicitud como la respuesta:

<?php
function callExternalApiAndLog() {
    $logger     = wc_get_logger();
    $logContext = [ 'source' => 'external-api' ];

    $requestData = [
        'name'  => 'John Doe',
        'email' => 'john@example.com'
    ];

    $logger->info( 'Enviando datos a la API: ' . json_encode( $requestData ), $logContext );

    $response = wp_remote_post( 'https://api.externa.com/endpoint', [
        'method'  => 'POST',
        'body'    => json_encode( $requestData ),
        'headers' => [ 'Content-Type' => 'application/json' ]
    ] );

    if ( is_wp_error( $response ) ) {
        $logger->error( 'Error en la solicitud: ' . $response->get_error_message(), $logContext );
        return;
    }

    $responseBody = wp_remote_retrieve_body( $response );
    $logger->info( 'Respuesta de la API: ' . $responseBody, $logContext );
}

 

Cómo agregar logs condicionales (modo debug)

Para evitar escribir demasiados logs en producción, puedes hacerlo condicional según el modo de depuración:

<?php
function conditionalLogExample( $message ) {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        $logger  = wc_get_logger();
        $context = [ 'source' => 'debug-mode' ];
        $logger->debug( $message, $context );
    }
}

 

El sistema de logs de WooCommerce es una herramienta poderosa que te ayuda a entender lo que ocurre detrás de escena en tus plugins. Ya sea que estés desarrollando integraciones con servicios externos o simplemente quieras monitorear el comportamiento de tu plugin, implementar logs te permitirá detectar errores y mejorar la calidad de tu desarrollo.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x