2010-05-14 14 views
5

¿Cuál sería la mejor manera de implementar NLog en mi aplicación Prism/CAL WPF? Esto podría ser una pregunta de aficionados, soy un poco nuevo en el marco completo de Prism :)Implementación correcta de NLog y Prism

Pensé en poner la referencia al dll de NLog en el módulo de Infraestructura y crear una clase singleton contenedora, p. MyLogger. Mi idea era poder hacer referencia a la implementación de 1 registrador en algún lugar central al que todo se refiere, y lo único que sé de Prism sería su módulo de Infraestructura.

La otra forma obvia es agregar una referencia a NLog a cada módulo pero creo que eso vencería el propósito del desacoplamiento y todo eso.

Cualquier idea sería de gran ayuda

Saludos

Respuesta

4

recomendaría algo similar a su primera idea, aunque se aprovecha una interfaz ya existente en Prisma.

Aunque no estoy seguro de las firmas de los métodos exactos disponibles para usted en Nlog, es posible que desee considerar el uso de la interfaz del prisma ILoggerFacade, que normalmente se define en el programa previo (ver la aplicación StockTraderRI para un ejemplo de cómo esto se establece arriba). Normalmente, esto actúa como un paso a través de Microsoft's Composite Logging interface, pero no hay ninguna razón por la cual no pueda usar esto para conectar su propio registrador.

Algunas razones para considerar este enfoque:

  1. Utiliza la interfaz ILoggerFacade ya existente en el marco de la prisma, que otros desarrolladores estarán familiarizados con
  2. Si más tarde decide ir a un registro diferente marco, sólo hay que reemplazar el objeto detrás de la aplicación ILoggerFacade

el otro enfoque sería hacer como usted sugiere: crear una interfaz que define un servicio a Nlog (o exponer una interf Nlog existente ace) en su DLL de infraestructura y registrar la implementación de ese servicio en su bootstrapper. A continuación, puede usar su contenedor de inyección de dependencia para obtener una referencia al servicio de registrador en sus módulos. Sin embargo, tenga en cuenta que esto realmente solo reproduce lo que la interfaz de ILoggerFacade ya le ofrece.

Cuestiones relacionadas