Domanda

sto usando metodo successivo per aggiungere un record di traccia:

TraceSource.TraceEvent(TraceEventType, Int32, String)

dove Int32 rappresenta ID evento.

Quindi, come filtro nel TraceSwitch per ascoltare solo specificato ID evento? Ir questo è impossibile?

<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>
È stato utile?

Soluzione

E 'possibile, ma è necessario scrivere un personalizzato TraceFilter e sovrascrivere il href="http://msdn.microsoft.com/en-us/library/system.diagnostics.tracefilter.shouldtrace.aspx" rel="nofollow"> ShouldTrace metodo

Quindi, è possibile dichiarare come questo in un file .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>

Altri suggerimenti

Si può provare a Ukadc.Diagnostics da CodePlex . Questo progetto prevede alcune estensioni utili per System.Diagnostics. La cosa più bella, a mio parere, che essi forniscono è un sistema basato token che può essere utilizzato per definire il formato di output log / trace simile a quello che si può ottenere con log4net e NLog. È una dipendenza sola configurazione. Cioè, se il codice è già utilizzando TraceSources, devi solo mettere Ukadc.Diagnostics sulla vostra macchina e avere il vostro punto di app.config ai loro TraceListeners, PropertyTokens, ecc

Ancora strumento il codice utilizzando System.Diagnostics.TraceSource oggetti.

Per il vostro punto, utilizzando Ukadc.Diagnostics è possibile filtrare in base a più gettoni di proprietà (tra cui EventId).

Si noti che il sistema di token può essere utilizzato solo (per quanto ne so) con i corrispondenti TraceListeners forniti nel Ukadc.Diagnostics (o qualsiasi TraceListener che si scrive in base alla loro classe di TraceListener di base).

Non ho usato questo progetto in produzione, ma ho ingannato in giro con un bel po 'e sono stati molto impressionato. Funziona bene ed è facile da estendere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top