Ho 2 servizi WCF che sto ospitando da un singolo host di Windows. Io uso trace listener che registra i dati nei registri delle applicazioni. Ho aggiunto il seguente codice nel file di configurazione.Utilizzo di più di un listener di traccia
<system.diagnostics>
<switches>
<add name="ReaderService.Switch" value="4"/>
<add name="InfoService.Switch" value="4"/>
</switches>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="EventLogTraceListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="ReaderServiceLog" />
</listeners>
</trace>
</system.diagnostics>
Tutti i registri di entrambi i servizi sono visualizzati sotto il nome ReaderServiceLog di origine. Quello che voglio fare è che i log di ciascun servizio dovrebbero apparire sotto un diverso nome sorgente.
Ad esempio, i registri da ReaderService devono essere visualizzati sotto il nome ReaderServiceLog e i registri da InfoService devono essere visualizzati in InfoServiceLog. Ho modificato la mia configurazione come la seguente.
<system.diagnostics>
<switches>
<add name="ReaderService.Switch" value="4"/>
<add name="InfoService.Switch" value="4"/>
</switches>
<sources>
<source name="EventLogTraceListener">
<listeners>
<add name="EventLogTraceListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="ReaderServiceLog" />
</listeners>
</source>
<source name="InfoService">
<listeners>
<add name="EventLogTraceListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="InfoServiceLog" />
</listeners>
</source>
</sources>
</system.diagnostics>
e utilizzato questo codice:
private TraceSource ts = new TraceSource("InfoService");
ts.TraceInformation(outputMessage, aslErrorText);
ts.Flush();
Ma non funziona. Non registra nulla.
Ho anche provato this. Ma non funziona.
<system.diagnostics>
<switches>
<add name="ReaderService.Switch" value="4"/>
<add name="InfoService.Switch" value="4"/>
</switches>
<sources>
<source name="ReaderService"
switchValue="Information, ActivityTracing">
<listeners>
<add name="EventLogTraceListener"/>
</listeners>
</source>
<source name="InfoService"
switchValue="Information, ActivityTracing">
<listeners>
<add name="EventLogTraceListener"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="EventLogTraceListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="ServiceLog" />
</sharedListeners>
ho usato lo stesso codice C# come sopra. Questo codice esegue correttamente la registrazione, ma ancora, è sotto lo stesso nome per entrambi i servizi. cioè ServiceLog.
Mi manca qualcosa qui? O c'è un altro modo per aggirare. Si prega di aiutare
hai visto [questo] (http://stackoverflow.com/questions/805154/defining-multiple-tracesources-not-running)? –
sì, ho visto questo e l'ho provato anche io. Ma è lo stesso di quello che avevo prima. – Newbee
vedi le modifiche ... – Newbee