Tuesday, March 13, 2007

Bitácoras (o Logging)

Actualmente es raro encontrar una aplicación o sistema que una vez terminado no deba ser corregido. La razón de esto es por la forma como analizamos, diseñamos, desarrollamos y probamos nuestras aplicaciones. Se debe ser realista sobre algo: en la actualidad se desarrolla mal software y así se siguiera mientras sigamos programando antes de elaborar un profundo análisis y diseño.. Mientras tanto, podemos seguir parchando y desarrollando nuevas versiones con lo único novedoso son correcciones de un error.

Instalamos nuestra aplicación en producción y al mes nuestro usuario nos comenta de un error raro y que no podemos replicar. De vez en cuando aparece este error y puede ser tan crítico al grado que se procesan las transacciones de forma incorrecta. Pero no podes replicarlo y no tenemos tiempo para estar pendientes de ese usuario. En este caso y en los otros casos donde deseamos un registro de todo lo que pasa con nuestra aplicación, es donde el logging en la capa de aplicación es muy útil.

Tener la capacidad de generar una bitácora de todas las excepciones ocurridas, mensajes de error, eventos, etc. generados en nuestras aplicaciones nos hace la vida más fácil. Además, tenemos la habilidad de registrar eventos relaciones con seguridad y así poder determinar si nuestra ampliación esta siendo atacada. Recordemos que esto aplica a aplicaciones Web o Windows.

Para java y C# existe unas herramientas que le permite al programador almacenar los registros de bitácora que deseamos almacenar sin mucho esfuerzo. Estas herramientas son Log4j (para java) y Log4net (para C# .NET). Además de brindar las clases que facilitan el registro de los eventos, también os permite cambar la configuración a partir de un archivo sin necesidad de recompilar el programa. Pueden encontrar un artículo de Security Focus interesante sobre como utilizarlo como bitácora de seguridad. También pueden ver ejemplos en las páginas respectivas de cada proyecto (los cuales pertenecen a Apache). Existe este otro artículo donde pueden hacer su primer “Hola, mundo con log4net”. Pero al final pueden encontrar los que necesitan en las páginas de cada herramienta y también buscan en su buscador favorito.

Si están metidos muy de lleno con la plataforma .NET y desean utilizar otro framework puede utilizar el Logging Aplication Block de las Patterns and Practices de Microsoft. Estas páginas le brindan las mejores prácticas para el desarrollo de software de alta calidad. Además brindan algunos bloques que adicionan funcionalidad al framework .NET.

Independientemente de que framework o metodología de registro de bitácoras utilicemos, es importante que lo hagamos no solo en nuestras aplicaciones, sino en todos nuestros servidores, puntos de autenticación, base de datos, etc. Y porque molestarse tanto? Bueno la información es poder y entre mas información tenemos mejores decisiones podemos tener. Además, creo que es un poco penoso que nosotros no sepamos que esta pasando, cuando somos los creadores o implementadotes de los sistemas.

No comments: