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

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top