Onde devo colocar um TraceSwitch projeto- ou todo o aplicativo no meu projeto?
-
03-07-2019 - |
Pergunta
Eu estou tentando melhorar o meu programa com algumas funcionalidades de registro fornecido pela System.Diagnostics
. Como meu Solution consiste em vários projetos, eu queria criar um interruptor para toda a aplicação e uma para cada projeto.
Agora, a pergunta é, como posso conseguir isso e onde eu deveria colocar a definição switch?
Começando com o interruptor de ampla aplicação, já que não há tal coisa como variáveis ??globais em C # Como eu entendi, como eu poderia conseguir isso?
Will colocando
static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");
uma vez em cada classe resolver este ou seria este sim criar tanto como interruptores existem classes, cada um com o mesmo nome? (O meu palpite é o último)
Ou devo colocar a inicialização uma vez em uma classe separada
static class GlobalSwitch
{
static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}
e referência a ele de todas as outras classes como esta ??p>
public OtherClass
{
static TraceSwitch Application = GlobalSwitch.Application;
}
Isso resolveria com 1 switch para um projeto inteiro, mas isso é uma boa prática?
Em relação ao interruptor de ampla aplicação, eu teria que fazer referência ao projeto que contém a classe GlobalSwitch
em todos os outros projetos, o que eu gostaria de evitar, se possível.
Algumas pistas de como isto pode ser feito de maneira inteligente seria muito apreciado.
Solução
I geralmente envolver interruptores vestigiais (e funções log) em um log central do conjunto de, expondo uma interface estática para o interruptor (es) e também métodos de registo estáticos que vai chamar a funcionalidade de registo subjacente em utilização (geralmente Trace.Write-funções ).