Mage::log()

Este pequeño post peca de obvio, aunque sólo busca funcionar como recordatorio.

Para testing, para generar un log propiamente dicho o para depurar código, en Magento podemos utilizar Mage::log() en lugar de la función nativa error_log de Php.

En primer lugar, para que se generen los logs, necesitamos activarlos. Para esto, desde el backend, vamos a System -> Configuration -> Developer.

Configuración de logs en Magento

Una vez activados, como bien indica la pantalla de configuración, vamos a encontrar los logs (una vez que se comiencen a ejecutar las llamadas) en var/log/system.log.

Si bien el método funciona con sus valores por defecto, nosotros podemos usarlo cambiando algunos de sus parámetros, incluso, podemos usarlo sin que los logs estén activados.

Como mencionaba al comienzo, la forma de registrar valores en los logs de Magento es invocando la función Mage::log(), a la cual se le pasa un valor como parámetro.

Cualquier valor que le pasemos será registrado de la siguiente forma.

2012-04-12T21:11:12+00:00 DEBUG (7): Mi valor.

Nosotros podemos indicar el nivel del log pasándolo como segundo valor en la llamada del método. Bien podríamos utilizar los valores numéricos para definir el tipo de mensaje o, en su lugar, llamar a las constantes de la clase Zend_Log, ubicada en /lib/Zend/Log.php.

De esta forma, si lo que quisiera es generar un log informativo, podríamos invocar a Mage::log de la siguiente manera:

Mage::log('Mi mensaje', Zend_Log::INFO);

El tercer parámetro que podemos pasar es el del nombre del archivo en el cual se guardará el log.

Por ejemplo:

Mage::log('Mi mensaje', Zend_Log::INFO, 'depurando-mi-modulo.log');

A partir de esto, nuestro log se guardará en var/log/depurando-mi-modulo.log.

Por último, existe un cuarto parámetro que puede ser útil cuando necesitemos comprobar algo en tiendas en producción. Se llama $forceLog y lo que hace es generar el log incluso si por configuración no está activado.

De esta forma, siguiendo el ejemplo, la llamada quedaría así.

Mage::log('Mi mensaje', Zend_Log::INFO, 'depurando-mi-modulo.log', true);

Con esto, lograríamos generar el log sin importar la configuración de la tienda.