Где я должен поместить TraceSwitch для проекта или приложения в свой дизайн? - PullRequest
3 голосов
/ 30 апреля 2009

Я пытаюсь улучшить мою программу некоторыми функциями ведения журнала, предоставляемыми 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 Ответ

2 голосов
/ 30 апреля 2009

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

...