Как отслеживать через категорию?
.NET позволяет добавлять выражения для кода в код. Вы можете использовать
Trace.WriteLine "(Некоторое сообщение" );
а затем определите прослушиватель трассировки, чтобы собрать эти сообщения в файл журнала. ОК до сих пор.
Но вы также можете сделать:
Trace.WriteLine "(Некоторое сообщение", "Категория" );
Как настроить фильтр в app.config(например,.exe.config), чтобы только сообщения с определенным значением "Категория" были отправлены слушателю. В документации намекает, что вы можете это сделать, но не знает, как, я думаю! Я хочу определить свои собственные категории (подсистемой) и иметь возможность маршрутизировать трассировку в различные файлы журналов, когда это необходимо.
(Да, я знаю все о log4net и как это может решить все мои проблемы).
Ник
Ответы
Ответ 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.