2014-03-03 35 views
-1

的其他组件我已经创建了一个使用System.Diagnostics程序类似下面的事件记录实用程序库:从类库使用TraceSource,并用它在相同的可执行

public class Logger 
{ 
    static TraceSource ts = new TraceSource("TestApp"); 
    public void Log(string message) 
    { 
     ts.TraceEvent(TraceEventType.Verbose, 0, message); 
    } 
} 

我想利用这个日志函数在我的应用程序和其他组件(DLL)的同一个应用程序。我想在我的应用程序的app.config声明监听器,但它没有工作:(我的app.config看起来像如下:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.diagnostics> 
    <trace autoflush="true"/> 
    <sources> 
     <source name="TestApp" 
       switchName="mySwitch" 
       switchType="System.Diagnostics.SourceSwitch" > 
     <listeners> 
      <clear/> 
      <add name="EventLogListener" 
      type="System.Diagnostics.EventLogTraceListener" 
      initializeData="Title for events" /> 
     </listeners> 
     </source> 
    </sources> 
    <switches> 
     <add name="mySwitch" value="Verbose" /> 
    </switches> 
    </system.diagnostics> 
</configuration> 

如果我移动在应用程序本身(可执行文件),带班记录仪给定的清单文件,我可以看到日志在事件查看器channed应用程序。但我不希望使用这种方式。

有人可以帮我找出这里的根本问题?

+0

表面上应用程序设置文件看起来不错。尝试一个不同的侦听器,说一个文件侦听器,并查看它是否与事件日志无关(可能会遇到权限问题,如果您正在登录到现有事件类别或新的事件类别时遇到问题)。我完全不理解你的最后一段。它在某些事情(不明确)之后有效(使事件查看器中的日志可见或引导),但是您不希望它以这种方式工作?你想以什么方式工作? – MatthewMartin

+0

我在最后一段中的意思是,如果我没有将记录器作为单独库的一部分,并将其所有代码放入单一控制台应用程序中,它就可以正常工作。我可以看到日志在事件通道中发布。 – user3375881

回答

2

我意识到csproj中的类库没有启用“Trace”。启用后,我至少在textwriterListener中看到了这些事件/

相关问题