Domanda

Quale sarebbe il modo migliore per attuare NLog nella mia applicazione Prism / CAL WPF. Questa potrebbe essere una questione dilettante, io sono un po 'nuova per l'intero quadro del prisma:)

ho pensato di mettere il riferimento al dll NLog nel modulo Infrastruttura e fare un involucro singleton classe esempio MyLogger. Il mio pensiero è stato quello di essere in grado di avere il riferimento a 1 logger implementazione da qualche parte in un posto centrale che tutto ha riferimento, e l'unica cosa che so di in Prism sarebbe il modulo Infrastruttura.

L'altro modo ovvio è quello di aggiungere un riferimento a NLog ad ogni modulo, ma penso che sarebbe vanificato l'obiettivo di disaccoppiamento e tutto il resto.

Tutte le idee sarebbe molto utile

Saluti

È stato utile?

Soluzione

mi sento di raccomandare qualcosa di simile alla tua prima idea, anche se sfrutta un'interfaccia già esistente nel prisma.

Mentre io non sono sicuro esattamente firme dei metodi disponibili nella NLog, si consiglia di considerare l'utilizzo di Prism ILoggerFacade interfaccia, che in genere è definito nel programma di avvio automatico (vedere la StockTraderRI domanda di un esempio di come questo è impostato). In genere, questo agisce come un passaggio fino alla Composite interfaccia registrazione di Microsoft, ma non c'è alcun motivo per cui non è possibile utilizzare questo per collegare in proprio logger.

A pochi motivi per considerare questo approccio:

  1. Si utilizza l'interfaccia ILoggerFacade già esistente nel quadro Prisma, che altri sviluppatori avranno familiarità con
  2. Se successivamente si decide di andare in un quadro di registrazione diverso, devi solo sostituire l'oggetto dietro l'attuazione ILoggerFacade

L'altro approccio sarebbe quello di fare come lei suggerisce: creare un'interfaccia che definisce un servizio per NLog (o esporre un'interfaccia NLog esistente) nella DLL infrastrutture e registrare l'attuazione di tale servizio nel vostro programma di avvio automatico. Si può allora il vostro contenitore iniezione di dipendenza per ottenere un riferimento al servizio logger nei moduli. Si noti, tuttavia, che questo riproduce in realtà solo ciò che l'interfaccia ILoggerFacade ti dà già.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top