06 julio 2009

Una implementación de log en PHP

Particularmente durante el período de desarrollo y pruebas, es importante mantener un registro de lo que va ocurriendo a nivel de código, especialmente cuando las pruebas las realiza un tercero. En esos casos es difícil que el usuario de pruebas entregue una descripción concreta de lo que intentaba hacer y qué fue lo que realmente sucedió.

Especialmente en ambientes de producción, en donde se ocultan los errores en pantalla y a vista del usuario final todo funciona bien, es útil implementar algún método de registrar un log de las distintas acciones y/o errores que pudiesen ocurrir. ¿Cómo se puede controlar este tipo de situaciones?

A continuación una descripción detallada:

Es relativamente común mantener en un único archivo todas las especificaciones y configuraciones del sitio, y con la instrucción include() se le invoca cada vez que sea necesario. Por lo tanto, para implementar un log necesitamos pasar por dos etapas: 1. Definir el log, 2. Registrar acciones en el log.

Acá, los ejemplos de cada paso:

1. con la función ini_set() especifico cómo se visualizarán los errores por pantalla, establezco un archivo plano TXT como log y finalmente indico que iré agregando cualquier nivel de errores.

ini_set("display_errors","0");
ini_set("log_errors","1");
ini_set("error_log", ROOT_LOG."/error_log.txt");
error_reporting(E_ALL);


2. luego, para disparar una marca en el log ejecuto la linea que sigue. Ojo con los dos parámetros que recibe: la descripción del mensaje el nivel del error.

trigger_error("Inicio de Sesion de Usuario (".$variableNombreUser.").",E_USER_NOTICE);


¿Cómo queda esa marca en el log? A continuación un ejemplo....

[06-Jul-2009 00:13:17] PHP Notice: Inicio de Sesion de Usuario (VALOR_VARIABLE). in URL_ARCHIVO_QUE_GATILLA_LOG/inApp.php on line 13


(las dos cadenas en mayúsculas y con guión bajo serían reemplazadas con el valor pasado en la variable y la url específica del servidor en el que se implementa el log. Importante: no olvidar definir los permisos respectivos para el archivo de destino del log, para que se realice la escritura.)

Más referencias de interés:
* Envio de Error
* Constantes de Niveles de Errores

No hay comentarios.: