Где я должен поместить TraceSwitch для проекта или приложения в свой дизайн?
Я пытаюсь улучшить свою программу с помощью некоторых функций ведения журнала, предоставляемых 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
класс в любом другом проекте, который я хотел бы избежать, если это возможно.
Некоторые подсказки относительно того, как это можно сделать разумным способом, будут очень благодарны.
1 ответ
Я обычно заключаю переключатели трассировки (и функции журналов) в центральную сборку журналов, предоставляя статический интерфейс к коммутатору (ам), а также методы статического журнала, которые будут вызывать используемую базовую функциональность журнала (обычно Trace.Write-функции).