使用多个跟踪侦听器

我有2个WCF服务,我从一个Windows主机托管。 我使用跟踪侦听器将数据记录到应用程序日志中。 我在配置文件中添加了以下代码。

           

来自两个服务的所有日志都显示在源ReaderServiceLog名称下。 我想要做的是,来自每个服务的日志应该出现在不同的源名称下。

例如,ReaderService中的日志应显示在名称ReaderServiceLog下,InfoService中的日志应显示在InfoServiceLog下。 我修改了我的配置,如下所示。

                   

并使用此代码:

 private TraceSource ts = new TraceSource("InfoService"); ts.TraceInformation(outputMessage, aslErrorText); ts.Flush(); 

但它不起作用。 它根本不记录任何内容。

我也尝试过这个 。 但它不起作用。

                     

我使用了与上面相同的c#代码。 此代码正确执行日志记录,但同样,这两个服务的名称相同。 即ServiceLog。

我在这里错过了什么吗? 或者还有其他办法吗? 请帮忙

此配置添加了2个不同的跟踪源(使用文件侦听器;如果您愿意,可能需要更改侦听器和目录路径):

   ...                            ...  

并使用它定义您的TraceSource:

 static TraceSource dataSource = new TraceSource("DataSource"); static TraceSource errorSource = new TraceSource("ErrorSource"); 

为了使用TraceSource更容易(对于某些场景),我编写了一个扩展方法:

 public static void WriteLine(this TraceSource source, object o) { var str = (o ?? string.Empty).ToString(); if (source.Listeners == null || source.Listeners.Count == 0) throw new InvalidOperationException(string.Format("TraceSource named {0} has no listeners", source.Name)); foreach (TraceListener listener in source.Listeners) listener.WriteLine(str); } 

这对我有用。

但是,您无法根据调用它的代码块在一个应用程序域中对TraceSource进行分类。