Come traccia filtro ascoltato dalla identificazione di evento?
-
11-10-2019 - |
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>
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.