¿Cómo crear un fichero de log en Zend Framework?



Hosting barato
VN:F [1.9.20_1166]
Rating: 10.0/10 (2 votes cast)
Para crear un fichero de log en Zend Framework nos basaremos en las clases:

  • Zend_Log
  • Zend_Log_Writer_Stream()


Crear el objeto de Log en Zend Framework

Para crear en nuestro código el objeto que gestione el blog, así como definir la ruta donde se encuentra el archivo lo haremos de la siguiente manera:

$logger = new Zend_Log();
$writer = new Zend_Log_Writer_Stream($ruta_del_archivo_log);
$logger->addWriter($writer);

La ruta del archivo que hará de log para nuestra aplicación la definiremos en función de la constante APPLICATION_PATH. De manera que a esta ruta, que nos da la raíz de la aplicación, definiremos dónde se encuentra nuestro archivo de log.

Por ejemplo, si queremos que nuestro directorio donde guardemos el log esté dentro de /application, la ruta al archivo sería:

$ruta_del_archivo_log  = APPLICATION_PATH . "/logs/salida.log";

Para poder definir la ruta anterior en nuestro proyecto, crearemos el directorio “logs”. No es necesario crear el fichero, porque el archivo se abrirá en modo “a”, es decir, se abrirá en modo escritura sólo. El puntero del fichero siempre apuntará al final del mismo. En caso de no existir el fichero, este se creará.

¿Cómo se escriben los mensajes en los ficheros de log?

Tenemos dos posibilidades a la hora de crear el mensaje:

  • Informando de la prioridad como parámetro del método de escritura del log:
    $logger->log('Mensaje informativo', Zend_Log::INFO);
    $logger->log('Valor variable: ' . $variable, Zend_Log::INFO);
    
  • Informando de la prioridad en el propio nombre del método:
    $logger->info('Mensaje informativo');
    $logger->info('Valor variable' . $variable);
    

Los mensajes, pueden tener distintas prioridades, en el ejemplo, hemos utilizado la prioridad INFO. A continuación tenemos un listado de todas las prioridades que podemos utilizar, y el sentido que se le puede dar a cada uno:

  • EMERG = 0; // Emergency: Sistema no utilizable
  • ALERT = 1; // Alert: Se debe realizar una acción
  • CRIT = 2; // Critical: Errores críticos
  • ERR = 3; // Error: Se ha producido un error
  • WARN = 4; // Warning: Se ha producido una aviso
  • NOTICE = 5; // Notice: Aviso significativo
  • INFO = 6; // Informational: Mensaje informativo
  • DEBUG = 7; // Debug: Mensaje de debug

Formateo de los mensajes en nuestro archivo de log en Zend Framework

Por defecto, los mensajes tiene el siguiente formato:

'%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;

Si queremos cambiar el formato del mensaje, por ejemplo a ‘%timestamp% %priorityName%: %message%’ . PHP_EOL; usaríamos la clase Zend_Log_Formatter_Simple de la siguiente manera:

$writer = new Zend_Log_Writer_Stream($ruta_del_archivo_log);
$format = '%timestamp% %priorityName%: %message%' . PHP_EOL;
$formatter = new Zend_Log_Formatter_Simple($format);
$writer->setFormatter($formatter);
$logger = new Zend_Log();
$logger->addWriter($writer);
$logger->info('Esto es una prueba');

Si por el contrario, queremos que el formato sea el de un XML, la clase a utilizar es Zend_Log_Formatter_Xml, de manera que quedaría de la siguiente manera:

$writer = new Zend_Log_Writer_Stream($ruta_del_log);
$formatter = new Zend_Log_Formatter_Xml();
$writer->setFormatter($formatter);
$logger = new Zend_Log();
$logger->addWriter($writer);
$logger->info('Mensaje informativo');

Siendo su salida, la siguiente:

<logEntry>
	  <timestamp>2007-04-06T07:24:37-07:00</timestamp>
	  <message>Mensaje informativo</message>
	  <priority>6</priority>
	  <priorityName>INFO</priorityName>
</logEntry>

¡¡¡Y esto es todo por el momento!!!

¡¡¡Cualquier comentario, mejora, o ayuda sobre este tema siempre será bienvenido!!!

¿Cómo crear un fichero de log en Zend Framework?, 10.0 out of 10 based on 2 ratings
Comparte y disfruta:

Si te ha gustado este artículo, te puede interesar ...



Hosting barato