Где мне следует разместить TraceSwitch для всего проекта или приложения в моем проекте?

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь улучшить свою программу с помощью некоторых функций ведения журнала, предоставляемых System.Diagnostics.Поскольку мое решение состоит из нескольких проектов, я хотел создать переключатель для всего приложения и по одному для каждого проекта.

Теперь вопрос в том, как я могу этого добиться и где мне поместить определение переключателя?

Начиная с переключателя всего приложения, поскольку в C#, насколько я понимаю, нет такой вещи, как глобальные переменные, как я мог этого добиться?

Будет ли положить

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

решить эту проблему один раз в каждом классе, или это скорее создаст столько переключателей, сколько существует классов, каждый с одинаковым именем?(я думаю, последнее)

Или мне следует поместить инициализацию один раз в отдельный класс

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

и ссылка на него из любого другого класса, подобного этому

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

Это решило бы проблему использования одного переключателя для всего проекта, но является ли это хорошей практикой?

Что касается переключателя всего приложения, мне пришлось бы сослаться на проект, содержащий GlobalSwitch class в любом другом проекте, чего я бы хотел избежать, если это возможно.

Буду очень признателен за некоторые подсказки о том, как это можно сделать разумным способом.

Это было полезно?

Решение

Обычно я помещаю переключатели трассировки (и функции журнала) в центральную сборку журналирования, предоставляя статический интерфейс переключателям, а также методы статического журнала, которые будут вызывать используемые базовые функции журнала (обычно функции Trace.Write).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top