将TraceSource拆分为多个TraceListeners级别

时间:2012-02-03 20:01:02

标签: .net app-config tracing

我尝试使用两个不同的日志级别设置MySource跟踪源。 FileLog应该跟踪所有内容(详细),系统事件日志应该只跟踪错误。

以下设置似乎已杀死日志记录到FileLog。我做错了什么?

<sources>
  <source name="MySource" switchName="MySource.Switch">
    <listeners>
      <add name="FileLog"/>
    </listeners>
  </source>
  <source name="MySource" switchName="MySource.SystemSwitch">
    <listeners>
      <add name="EventLog"/>
    </listeners>
  </source>
</sources>
<switches>
  <add name="MySource.Switch" value="Verbose"/>
  <add name="MySource.SystemSwitch" value=Error"/>
</switches>

1 个答案:

答案 0 :(得分:6)

每个源只包含一个<source>,有多个侦听器,然后在侦听器上添加过滤器,如下所示:

<configuration>
  <system.diagnostics>
    <sources>
      <source name="Service" switchValue="Information">
        <listeners>
          <clear />
          <add name="RollingFile" />
          <add name="EventLog" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="RollingFile"
        type="Essential.Diagnostics.RollingFileTraceListener, Essential.Diagnostics"
        initializeData="{ApplicationName}-{DateTime:yyyy-MM-dd}.log"
        template="{LocalDateTime:yyyy-MM-dd HH:mm:ss.fff} {Message}{Data}"
      />
      <add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="YourAppName">
        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning" />
      </add>
    </sharedListeners>
  </system.diagnostics>
</configuration>