2009-07-24 9 views
60

私はカスタムトレースリスナ(TextWriteTraceListenerから派生した)を実装しました。標準のTextWriteTraceListenerの代わりに使用するようにアプリケーションを設定したいと思います。app.configでカスタムTraceListenerを定義する方法

最初にデフォルトでTextWriteTraceListenerを追加して、正常に動作することを確認しました。ここに私はapp.configです:

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" indentsize="4"> 
      <listeners> 
       <add name="TextListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log" /> 
      <remove name="Default" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 

今私のトレースリスナーがMyApp.Utils名前空間で定義され、それがFormattedTextWriterTraceListenerを呼ばれています。だから私は、MyApp.Utils.FormattedTextWriterTraceListenerに上記の設定で種類を変更し、それが現在のようになります。

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" indentsize="4"> 
      <listeners> 
       <add name="MyTextListener" type="MyApp.Utils.FormattedTextWriterTraceListener" initializeData="trace.log" /> 
      <remove name="Default" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 

しかし、今、私は私がメッセージをConfigurationErrorsExceptionを得ている何かをログに記録しようとすると:

Couldn't find type for class MyApp.Utils.FormattedTextWriterTraceListener.

誰もが設定でこのカスタムリスナーを設定することができ、それが可能であれば誰も知っていますか?

答えて

75

そうのように、あまりにもアセンブリを指定してみてください。

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" indentsize="4"> 
      <listeners> 
       <add name="TextListener" 
        type="MyApp.Utils.FormattedTextWriterTraceListener, MyApp" 
        initializeData="trace.log" /> 
      <remove name="Default" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 
+0

アセンブリ名が同じ(MyApp'と私は型引数 – RaYell

+1

に私はポストを編集したことを加えた、これは別のメッセージを与えていること –

+1

のように指定してみてください 'です例外タイプ) 'MyApp.Utils.FormattedTextWriterTraceListener、MyAppを作成できませんでした。 – RaYell

3

を私は最近、と念のために、それは誰にも役立ちますこれで苦労してきた...

を私は私のタイプは、私が書いた存在を知っていました次:私の場合は

Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof("yourclassname")); 
Type myClassType = assembly.GetType("yournamespace.yourclassname"); 

、myClassType.AssemblyQualifiedNameは、私は、type属性で私のapp.configファイルに必要な文字列を含んでいました。例えば

enter image description here

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true"> 
     <listeners> 
      <add name="CircularTraceListener" /> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="CircularTraceListener" type="Microsoft.Samples.ServiceModel.CircularTraceListener, CircularTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
      initializeData="C:\MyWebService\APILog\CircularTracing-service.svclog" maxFileSizeKB="1000" /> 
    </sharedListeners> 
    <trace autoflush="true" /> 
    </system.diagnostics> 
関連する問題