У меня есть 2 сервиса WCF, которые я размещаю у одного хоста Windows. Я использую прослушиватель трассировки, который регистрирует данные в журналах приложений. Я добавил следующий код в файл конфигурации.Использование нескольких прослушивателей трассировки
<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>
Все журналы обеих служб отображаются под исходным именем ReaderServiceLog. Что я хочу сделать, журналы из каждой службы должны отображаться под другим именем источника.
Например, журналы из ReaderService должны появиться под именем ReaderServiceLog, а журналы из InfoService должны появиться в InfoServiceLog. Я изменил свою конфигурацию следующим образом.
<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>
и использовать этот код:
private TraceSource ts = new TraceSource("InfoService");
ts.TraceInformation(outputMessage, aslErrorText);
ts.Flush();
Но это не работает. Он ничего не регистрирует.
Я также пробовал this. Но это не работает.
<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>
Я использовал тот же код C#, как указано выше. Этот код правильно записывает журнал, но опять же, он под тем же именем для обеих служб. т.е. ServiceLog.
Я что-то упустил? ИЛИ Есть ли другой способ. Пожалуйста, помогите
Вы видели [это] (http://stackoverflow.com/questions/805154/defining-multiple-tracesources-not-running)? –
да, я видел это, и я тоже попробовал. Но то же самое, что и раньше. – Newbee
посмотреть изменения ... – Newbee