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


