Objetivo:
Registrar eventos de relevancia para utilizarlos en procesos de auditoria o troubleshuting post mortem.
Es una herramienta muy útil en ambientes productivos donde es imposible depurar con herramientas de desarrollo.
Los eventos pueden ser información de depuración o errores ocurridos en la aplicación.
Características deseables de un sistema de logging:
Configuración de niveles de log
Formateo de eventos
Agregado de información adicional en publicación de eventos
Logging asincrónico
Logging confiable
Logging centralizado
Configuración jerárquica y dinámica
Publicación a múltiples destinos
Aplicación para visualizar y analizar los eventos.
Anti patrones:
Todo en un mismo mensaje: Todo junto en un mismo archivo es muy dificil de analizar.
Registro de datos incompletos:Registrar lo que sirva para, ni más ni menos.
Log sin formato o formato no consistente: Si el log no está estructurado, su analisis se hace muy dificil.
Entradas multi línea: Complica el procesamiento de log para pasarlo a una DB o aplicación que muestre la información en forma amigable.
Registrar mensajes relacionados a un mismo contexto en varias líneas: Muy dificil de analizar lo que pasó en un determinado contextode ejecución.
Buenas prácticas:
Registrar los logs en repositorio con formato, esto facilita en análisis de los logs registrados.
Separar los mensajes en diferentes destinos dependientes de la audiencia que los usa, por un log de auditoria puede tener muchas más información de la necesario para resolver un problema que ocurrió en la aplicación.
Registrar las acciones antes de que ocurran
Evitar que los archivos de logs sean muy grandes, se recomienda archivarlos y crear uno nuevo.
Registrar los eventos en una sola línea, es más fácil de analizar y filtrar. Si la información tiene formato complejo se recomienda usar xml.
Usar formato consistente en un mismo archivo.
Patrones utilizados
Estrategia:
Se puede usar para seleccionar la forma en que el sistema de log registra los eventos y errores.
Pipes and filters:
Se usa para tener un mecanismo extensible y de bajo acoplamiento para agregar información contextual y codificación a los mensajes antes de enviarlo al repositorio de logging.
Consideraciones de implementación:
Por lo general son frameworks muy flexibles, que soporta multiples fuentes y destinos, por lo tanto para implementarlo adecuadamente se requiere un buen análisis de que funcionalidades usar y cual es su mejor forma de implementar.
Otros frameworks de logging e instrumentación.
Java: log4J y de este log4Net, log4PHP, log4JavaScript, log4C, log4VB, log4SQL, log4PLSQL etc
AJAX: log4javascript, JSLog, Lumberjack, log4Js, jsTracer
Unix like: syslogd (nativo).
Bibliografía
Carácteristicas
http://gojko.net/2006/12/09/logging-anti-patterns/
Frameworks
Pattern & Practices Logging Application Block
Apache Log4Net
Patrones
http://www.dofactory.com/Patterns/PatternStrategy.aspx
http://msdn.microsoft.com/en-us/library/ms978599.aspx
No hay comentarios.:
Publicar un comentario