Dove devo inserire un TraceSwitch a livello di progetto o di applicazione nel mio progetto?

StackOverflow https://stackoverflow.com/questions/806089

  •  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.

È stato utile?

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 ).

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