我有 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();
但它不起作用。它根本不记录任何东西。
我也试过这个。但它不起作用。
<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# 代码。此代码正确执行日志记录,但同样,这两个服务的名称相同。即服务日志。
我在这里错过了什么吗?或者有没有其他方法。请帮忙