2014-03-03 57 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中看到了這些事件/

相關問題