
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_Logger
y 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_File
y 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_Logger
para 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:
- Ve a
WooCommerce > Estado > Registros
. - Selecciona el archivo llamado
my-plugin
(o el nombre que hayas usado ensource
). - 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.