2010-01-29 12 views
5

Domanda semplice: vedi titolo. Sto usando .NET 3.5.Esiste un framework di registrazione incorporato in .NET?

Elaborazione: Sto costruendo un plug-in che verrà caricato in un'applicazione di terze parti in fase di esecuzione. L'applicazione principale utilizza log4net come framework di registrazione. Tuttavia, non espone il logger root quindi non siamo in grado di accedere. (Ho sollevato questo problema con gli sviluppatori upstream e lo risolveranno per una versione futura quindi nel frattempo ho bisogno di trovare qualcos'altro)

Un'altra limitazione del sistema è che quando riceve la notifica che dovrebbe caricare un plugin che non esiste sul sistema locale, esso estrae quel plugin da un server a cui è connesso (se esiste sul server), ma può solo tirare giù l'assembly dove il plugin vive . Ciò significa che nessun assembly esterno e nessun file .config o qualsiasi altro file possono essere distribuiti con il plug-in.

Ciò mi lascia solo con assembly .NET integrati e tutto il resto del mio plugin. Tuttavia, non voglio reinventare la ruota costruendo me stesso un altro framework di registrazione, quindi mi piacerebbe sapere quale sarebbe l'approccio migliore a questo problema.

Preferirei accedere a un file e vorrei evitare di scaricare materiale nel registro eventi di Windows.

+0

"non espone il root logger" - non è sufficiente aggiungere un riferimento a log4net.dll e accedere direttamente al root logger? – Joe

+1

Ho provato a creare il mio root logger e provare a usare le applicazioni genitore 'inutilmente. Log4net consente solo un logger root per applicazione e l'applicazione genitore ne sta già creando uno. Se il loro fosse esposto da qualche parte, sarei in grado di usarlo, ma non è così. Non sono sicuro che si tratti di un solo root logger per app o uno per AppDomain.Se è uno per AppDomain e potrei provare a creare il mio AppDomain dal mio plugin e quindi creare il mio root logger. – alimbada

risposta

10

due opzioni principali sono là fuori:

I Trace e Debug classi che fanno parte del framework .NET (all'interno del System.Diagnostics namespace) sono probabilmente la soluzione migliore. Questi forniscono gli strumenti per eseguire la registrazione leggera su una varietà di listener configurabili in fase di runtime, che possono scrivere su file, eventi e molti altri luoghi.

Sembra che non sia possibile aggiungere classi aggiuntive alla propria applicazione, ma se è possibile, si consiglia la libreria di Microsoft Enterprise, che pur essendo un framework di registrazione esterno, viene fornita da Microsoft e tende a riprodurre correttamente con codice .NET.

+0

Stavo pensando l'Enterprise Library in origine troppo, ma dopo aver confermato i miei sospetti che si trattava di una libreria esterna ho smesso di perseguire tale linea di pensiero. Cercherò Trace e Debug per ora. Saluti. :) – alimbada

-1

+1 per traccia e debug. Si potrebbe chiedere agli sviluppatori upstream di implementare un TraceListener che inoltra i propri messaggi in Log4Net in modo che tutto finisca in un singolo file.

Possono anche prendere in considerazione Gibraltar per la visualizzazione e l'analisi dei dati di log4net. Infatti, se gli sviluppatori a monte avessero integrato Gibilterra, avrebbero unito automaticamente i dati log4net e Trace.

AGGIORNAMENTO: Abbiamo reso GRATUITO il nostro Log Viewer!

Leggi il nostro blog per di più sul perché our best log viewer is now FREE

Oppure visitate il nostro sito web per learn more o semplicemente get the bits now!

Problemi correlati