Pregunta

Estoy intentando mejorar mi programa con alguna funcionalidad de registro proporcionada por System.Diagnostics . Como mi solución consta de varios proyectos, quería crear un interruptor para toda la aplicación y uno para cada proyecto.

Ahora la pregunta es, ¿cómo puedo lograr esto y dónde debo poner la definición del interruptor?

Comenzando con el cambio de aplicación, ya que no hay variables globales en C # como lo entendí, ¿cómo podría lograr esto?

Will poniendo

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

una vez en cada clase resuelve esto o esto crearía tantos interruptores como clases, cada uno con el mismo nombre? (supongo que es lo último)

¿O debería poner la inicialización una vez en una clase separada

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

y referencia a él desde cualquier otra clase como esta

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

Esto resolvería tener 1 interruptor para un proyecto completo, pero ¿es una buena práctica?

Con respecto al cambio de aplicación, tendría que hacer referencia al proyecto que contiene la clase GlobalSwitch en cualquier otro proyecto, lo que me gustaría evitar si es posible.

Algunas pistas sobre cómo se puede hacer esto de manera inteligente serían muy apreciadas.

¿Fue útil?

Solución

Normalmente envuelvo interruptores de rastreo (y funciones de registro) en un ensamblaje de registro central, exponiendo una interfaz estática a los conmutadores y también métodos de registro estático que llamarán a la funcionalidad de registro subyacente en uso (generalmente funciones de rastreo. ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top