Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Marcos de DesarrolloDiseño e implementación de aplicaciones Web con .NET
Objetivos
Conocer la librería de clases "Enterprise Library"
Aprender a usar el Logging Application Block
Introducción EL es un conjunto de componentes de software reusables(Application Blocks) que resuelven problemas comunes: seguridad, acceso a datos, registro (logging), inyección de dependencias, etc.
Código fuente se puede descargar de forma gratuita Se puede modificar, extender… Se puede utilizar como guía de arquitectura
La EL está programada para el .NET Framework, pero no es parte de él. No es un producto Microsoft con soporte
Application Blocks Un Application Block es un tipo de componente reusable Unitity es un Application Block de la EL
Los ABs no son específicos a ningún tipo de aplicación o arquitectura
La EL incluye algunas herramientas gráficas que facilitan la configuración de algunos ApplicationBlocks (p. ej.: Logging)
Enterprise Library 5,0 Application Blocks1. Caching Application Block
Mecanismos de caché para diferentes capas de aplicación2. Cryptography Application Block
Hashing, cifrado simétrico3. Data Access Application Block
Funcionalidad estándar de acceso a Bases de Datos 4. Exception Handling Application Block
Definición de estrategias de procesado de excepciones5. Logging Application Block
Funcionalidad de log
6. Policy Injection Application Block Implementar políticas de intercepción que pueden usarse para agilizar la implementación de características comunes, tales como el registro (logging), el almacenamiento en caché, la gestión de excepciones, la validación, etc.
7. Security Applicattion Block Autorización, caché de opciones de seguridad
8. Unity Application Block Contenedor de DI extensible con soporte para inyección de constructor, propiedad y método, así como intercepción de tipo e instancia
9. Validation Application Block Crear reglas de validación para los objetos de negocio
Enterprise Library 5,0 Application Blocks
Logging Application Block. Introducción
Permite generar eventos de log en diferentes destinos, sin necesidad de modificar el código Posibles destinos (simultáneos) de la información de log:
Visor de eventos Base de Datos (SqlServer) Correo electrónico Fichero (XML, texto plano, …) …
Posibilita configuración en tiempo de ejecución
Permite filtrar mensajes en base a la categoría
Logging Application Block. Uso Es necesario añadir la siguiente referencia al proyecto:
Y desde código añadir el espacio de nombres: using Microsoft.Practices.EnterpriseLibrary.Logging;
Logging Application Block. Uso Desde código:
No indica el destino del log
// ...
LogEntry entry = new LogEntry();entry.Message = "Mensaje a registrar";
entry.Severity = System.Diagnostics.TraceEventType.Critical;
entry.Categories.Add("General");
Logger.Write(entry);
// ...
Logging Application BlockConfiguración1) Lanzar "Enterprise Library Configuration Tool" (EntLibConfig.exe)2) File > Open Application > "Seleccionar fichero .config del proyecto en el que
se desea configurar el log
Logging Application BlockConfiguración
Logging Application BlockConfiguración
Logging Application BlockConfiguración
Logging Application BlockConfiguración
Resultado en fichero .config (recortado) (1 de 2)<?xml version="1.0" encoding="utf‐8"?><configuration><configSections><section name="loggingConfiguration" type="Microsoft.Practices...
</configSections><loggingConfiguration name="Logging Application Block" tracingEnabled="true"defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"><listeners><add fileName="trace.log"header="‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"footer="‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"formatter=""listenerDataType="Microsoft.Practices...traceOutputOptions="None" filter="All" type="Microsoft.Practices...name="FlatFile TraceListener" />
<add source="Enterprise Library Logging" formatter="Text Formatter"log="Application" machineName="" listenerDataType="Microsoft.Practices...traceOutputOptions="None" filter="All" type="Microsoft.Practices... name="Formatted EventLog TraceListener" />
</listeners>
Logging Application BlockConfiguración
Resultado en fichero .config (recortado) (2 de 2)<formatters>
<add template="Timestamp: {timestamp}...type="Microsoft.Practices...name="Text Formatter" />
</formatters><categorySources>
<add switchValue="All" name="General"><listeners>
<add name="FlatFile TraceListener" /><add name="Formatted EventLog TraceListener" />
</listeners></add>
</categorySources><specialSources>
...</specialSources>
</loggingConfiguration></configuration>
Logging Application BlockConfiguración
Logging Application Block En ModelUtil se ha implementado la funcionalidad de log
LogManager Delega su funcionamiento en Logging Application Block
Basada en clase Logger
Simplifica el registro de mensajes Utiliza "MessageType“: Info, Warning, Error
Subconjunto de TraceEventType
Logging Application Block Es.Udc.DotNet.ModelUtil.Log
public class LogManager{
private LogManager() { }
public static void RecordMessage(String message){
RecordMessage(message, MessageType.Error, "General");}
public static void RecordMessage(String message, MessageType messageType){
RecordMessage(message, messageType, "General");}
Logging Application Block Es.Udc.DotNet.ModelUtil.Log
public static void RecordMessage(String message, MessageType messageType, string category)
{
Console.WriteLine("[" + DateTime.Now.ToString() + "] " +"(" + messageType.ToString() + ") : " + message);
// Provided by MS Enterprise LibraryLogEntry entry = new LogEntry();
entry.Message = message;entry.Severity = (TraceEventType)messageType;entry.Categories.Add(category);
Logger.Write(entry);
}
}
Logging Application Block Es.Udc.DotNet.ModelUtil.Log.LogManager. Uso:
LogManager.RecordMessage("Esto es un mensaje de ERROR");
LogManager.RecordMessage("Esto es un mensaje informativo", MessageType.Info);
LogManager.RecordMessage("Esto es un mensaje informativo de categoría 'General'", MessageType.Info, "General");
Bibliografía Recomendada:
Microsoft Enterprise Library 5,0 http://msdn.microsoft.com/en‐us/library/ff632023.aspx
Logging Application Block http://msdn.microsoft.com/en‐us/library/ff664569(v=pandp.50).aspx