Подтвердить что ты не робот

Как отслеживать через категорию?

.NET позволяет добавлять выражения для кода в код. Вы можете использовать

Trace.WriteLine "(Некоторое сообщение" );

а затем определите прослушиватель трассировки, чтобы собрать эти сообщения в файл журнала. ОК до сих пор.

Но вы также можете сделать:

Trace.WriteLine "(Некоторое сообщение", "Категория" );

Как настроить фильтр в app.config(например,.exe.config), чтобы только сообщения с определенным значением "Категория" были отправлены слушателю. В документации намекает, что вы можете это сделать, но не знает, как, я думаю! Я хочу определить свои собственные категории (подсистемой) и иметь возможность маршрутизировать трассировку в различные файлы журналов, когда это необходимо.

(Да, я знаю все о log4net и как это может решить все мои проблемы).

Ник

4b9b3361

Ответ 1

Для фильтрации следов по строкам категории вам нужно будет выполнить код TraceFilter. В противном случае вы можете использовать метод TraceEvent, а затем использовать EventTypeFilter, чтобы отфильтровать трассы на основе TraceEventType.

Чтобы изменить фильтры, вы используете файл app.config, как описано в примере для EventTypeFilter.

Ответ 2

После ответа Джеффа со ссылкой на TraceEvent, я успешно использовал TraceSource для настройки довольно гранулированной фильтрации. Трассировка может делать только то, что вы просите, если вы пишете пользовательские фильтры и т.д., Но TraceSource может обеспечить то, что вам нужно в значительной степени из коробки. Сообщение Майка в http://bit.ly/dXgHa7 дало мне ясность относительно того, как переключатели, слушатели и фильтры работают вместе с TraceSource для эффективного фильтра.

Ответ 3

Просто чтобы прояснить ситуацию здесь.

строка вроде этого не будет работать:

Trace.Listeners["listener2"].Filter = new CategoryFilter("FooFilter", new List<string>(), CategoryFilterMode.DenyAllExceptAllowed);

Потому что вы не можете назначить CategoryFilter для TraceFilter. Тип несовместимости. Намерение здесь (в OP) кажется попыткой выполнить это. - Который, когда вы смотрите на app.config, кажется, возможно выполнимым, но тип несовместимости более понятен при программном программировании.

Чтобы усложнить проблему и, возможно, исходную точку смятения в MS Doc, заключается в том, что LogSource может иметь TraceListener, но TraceListener не может иметь CategoryFilter. Типы идут только в одном направлении и выглядят так, что Trace должна быть в нижней части отношения "used-by" по отношению к остальной структуре ведения журнала в EntLib.