在app.config中使用两个TraceListeners和不同的过滤器配置TraceSource

时间:2017-05-05 13:35:38

标签: c# .net logging app-config tracelistener

我使用.net框架类TraceSourceTraceListener进行日志记录。它们在我的app.config文件中配置。相同的TraceSource可以记录到写入不同日志文件的多个不同TraceListener。

现在我想从特定的TraceSource中过滤TraceEvents,但只针对一个TraceListener而不是另一个

在我的app.config文件中,我有一些共享的TraceListeners:

<sharedListeners>
  <add name="log1" type="MyTraceListener,MyAssembly"  initializeData="log1.log"/>
  <add name="log2" type="MyTraceListener,MyAssembly"  initializeData="log2.log"/>
  <add name="logWarning" type="MyTraceListener,MyAssembly"  initializeData="logWarning.log">
      <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning"/>
  </add>
</sharedListeners>

我已经配置了一些TraceSources

  <source name="Foo" switchValue="All">
      <listeners>
        <add name="log1"></add>
        <add name="log2"></add>
        <add name="logWarning"></add>
      </listeners>
  </source>
  <source name="Bar" switchValue="All">
      <listeners>
        <add name="log1"></add>
        <add name="log2"></add>
        <add name="logWarning"></add>
      </listeners>
  </source>

监听器logWarning仅从所有来源接收严重性为warning或更高级别的TraceEvents。到目前为止一切都很好。

现在我想配置一个监听器log2,仅接收来自源Foo的警告,但仍然是来自源bar的所有警告。听众log1还应该收到来自Foobar的所有内容。

这是什么问题的app.config语法?

0 个答案:

没有答案