Où devrais-je placer un TraceSwitch au niveau du projet ou de l'application dans ma conception?

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

  •  03-07-2019
  •  | 
  •  

Question

J'essaie d'améliorer mon programme avec certaines fonctionnalités de journalisation fournies par System.Diagnostics . Ma solution étant composée de plusieurs projets, je souhaitais créer un commutateur pour l’application entière et un pour chaque projet.

Maintenant, la question est de savoir comment puis-je y parvenir et où dois-je placer la définition du commutateur?

À partir du commutateur d'application large, puisqu'il n'existe pas de variables globales en C # telles que je les ai comprises, comment puis-je y parvenir?

Est-ce que mettre

static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");

Une fois dans chaque classe, résolvez ceci ou est-ce que cela créerait autant de commutateurs qu'il y a de classes, chacune avec le même nom? (je suppose que c'est le dernier)

Ou devrais-je mettre l'initialisation une fois dans une classe séparée

static class GlobalSwitch
{
    static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}

et référence à celle-ci de toutes les autres classes comme celle-ci

public OtherClass
{
    static TraceSwitch Application = GlobalSwitch.Application;
}

Cela résoudrait le problème en ayant 1 commutateur pour tout le projet, mais est-ce une bonne pratique?

En ce qui concerne le commutateur d'application, il me faudrait référencer le projet contenant la classe GlobalSwitch dans tous les autres projets, ce que j'aimerais éviter si possible.

Certains indices sur la manière de procéder peuvent être très appréciés.

Était-ce utile?

La solution

J'emballe généralement les commutateurs de trace (et les fonctions de journalisation) dans un assemblage de journalisation central, ce qui leur donne une interface statique ainsi que des méthodes de journalisation statiques qui appellent la fonctionnalité de journalisation sous-jacente utilisée (généralement Trace.Write-functions ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top