Frage

Ich verwende nächste Methode eine Spur Datensatz hinzufügen:

TraceSource.TraceEvent(TraceEventType, Int32, String)

Dabei gilt Int32 repräsentiert Ereignis-ID.

So, wie man Filter in Trace nur von bestimmten Ereignis-ID zu hören? Ir ist das unmöglich?

<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>
War es hilfreich?

Lösung

Es ist möglich, aber Sie müssen eine benutzerdefinierte Tracefilter und überschreiben Sie die Should Methode. Die ID wird an sie übergeben, aber keine Out-of-the-Box-Filter unterstützt.

Dann können Sie es so in einer CONFIG-Datei deklarieren:

<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>

Andere Tipps

Sie können versuchen, Ukadc.Diagnostics von Codeplex . Dieses Projekt bietet einige nützliche Erweiterungen für System.Diagnostics. Die coolste Sache, meiner Meinung nach, dass sie bieten ein Token-basiertes System, das verwendet werden kann, log / trace Ausgabeformat ähnlich wie zu definieren, was Sie mit log4net und NLog erreichen können. Es ist eine konfigurations nur Abhängigkeit. Das heißt, wenn Sie Code bereits Trace verwenden, können Sie nur Ukadc.Diagnostics auf Ihrem Rechner setzen und haben Ihre app.config Punkt auf ihre Tracelisteners, PropertyTokens etc.

Sie noch Instrument Code mit System.Diagnostics.TraceSource Objekte.

Um Ihren Punkt mit Ukadc.Diagnostics Sie basiert auf den meisten Immobilien-Token-Filter kann (einschließlich EventId).

Beachten Sie, dass das Token-System kann nur verwendet werden (soweit ich weiß) mit dem entsprechenden Tracelisteners in Ukadc.Diagnostics vorgesehen (oder einem Tracelistener, dass Sie auf der Grundlage ihrer Basis Tracelistener-Klasse schreiben).

Ich habe dieses Projekt nicht in der Produktion verwendet, aber ich habe mit ihm ziemlich viel und habe ziemlich beeindruckt täuschen herum. Es funktioniert gut und ist einfach zu erweitern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top