Где я должен поместить 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-функции).

Другие вопросы по тегам