Как отфильтровать трассировку, слушаемой идентификатором события?

StackOverflow https://stackoverflow.com/questions/4463986

Вопрос

Я использую следующий метод, чтобы добавить записи трассировки:

TraceSource.TraceEvent(TraceEventType, Int32, String)

где Int32 представляет идентификатор события.

Итак, как фильтровать в Traceswitch, чтобы прослушать только по указанному идентификатору события? Ir это невозможно?

<system.diagnostics>
    <sources>
        <source name="MyTraceSource" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch>"
            <listeners>
                <add name="console" type="System.Diagnostics.ConsoleTraceListener" />
            </listeners>
        </source>
    </sources>
    <switches>
        <add name="sourceSwitch" value="?" />
    </switches>
</system.diagnostics>
Это было полезно?

Решение

Это возможно, но вам нужно написать пользовательский Tracefilter и переопределить Должен метод Идентификатор передается в него, но ни один из которых не поддерживает его фильтр.

Затем вы можете объявить это так в файле .config:

<source name="MyTraceSource" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch">
  <listeners>
    <add name="console" type="System.Diagnostics.ConsoleTraceListener">
      <filter type="YourNamespace.YourFilter, YourAssembly, ..." />
    </add>
  </listeners>
</source>

Другие советы

Можешь попробовать Ukadc.diagnostics из Codeplex. Анкет Этот проект предоставляет некоторые полезные расширения для System.diagnostics. Самая крутая вещь, на мой взгляд, они предоставляют систему, основанную на токенах, которую можно использовать для определения формата вывода журнала/трассировки, аналогичного тому, что вы можете достичь с помощью log4net и nlog. Это зависимость только для конфигурации. То есть, если вы уже используете Tracesources, вам нужно только поставить UKADC.Diagnostics на свою машину и иметь свое приложение.

Вы все еще представляете свой код, используя System.Diagnostics.tracesource объекты.

По вашему мнению, используя UKADC.Diagnostics, вы можете фильтровать на основе большинства токенов имущества (включая EventID).

Обратите внимание, что система токенов может быть использована только (насколько я знаю) с соответствующими трассолистами, предоставленными в UKADC.Diagnostics (или любом трасселистенере, который вы пишете на основе их базового класса Tracelistener).

Я не использовал этот проект в производстве, но я немного обманул его и был очень впечатлен. Это работает хорошо и легко расширить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top