Dove devo inserire un TraceSwitch a livello di progetto o di applicazione nel mio progetto?
-
03-07-2019 - |
Domanda
Sto cercando di migliorare il mio programma con alcune funzionalità di registrazione fornite da System.Diagnostics
. Poiché la mia soluzione è composta da diversi progetti, volevo creare un interruttore per l'intera applicazione e uno per ogni progetto.
Ora la domanda è: come posso raggiungere questo obiettivo e dove devo inserire la definizione dello switch?
A partire dall'interruttore wide dell'applicazione, dal momento che non ci sono variabili globali in C # come l'ho capito, come potrei farlo?
Will put
static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");
una volta in ogni classe risolverlo o questo creerebbe piuttosto gli interruttori quante sono le classi, ognuna con lo stesso nome? (la mia ipotesi è la seconda)
O dovrei mettere l'inizializzazione una volta in una classe separata
static class GlobalSwitch
{
static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}
e riferimento ad esso da ogni altra classe come questa
public OtherClass
{
static TraceSwitch Application = GlobalSwitch.Application;
}
Ciò risolverebbe con 1 interruttore per un intero progetto, ma è una buona pratica?
Per quanto riguarda lo switch largo dell'applicazione, dovrei fare riferimento al progetto contenente la classe GlobalSwitch
in ogni altro progetto, che vorrei evitare se possibile.
Alcuni indizi su come farlo in modo intelligente sarebbero molto apprezzati.
Soluzione
Di solito avvolgo gli switch di traccia (e le funzioni di registro) in un assembly di registrazione centrale, esponendo un'interfaccia statica agli switch e anche i metodi di registro statici che chiameranno la funzionalità di registro sottostante in uso (di solito Trace.Write-funzioni ).