WCFトレースをオンにする方法は?


160

更新:

WCFトレースをオンにしようとしましたが、まだ成功しません...以下が最新の更新です。

以下の場所への書き込み許可は必要ですか?

  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="sdt"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "@\\myservername\folder1\traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

.NET Framework 3.5を使用しています。

デバッグの目的でWCF追跡を有効にするための段階的な指示は何ですか?

回答:


230

MSDNから取得した次の構成を適用して、WCFサービスでトレースを有効にすることができます。

<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true" >
        <listeners>
             <add name="xml"/>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
      <source name="myUserTraceSource"
              switchValue="Information, ActivityTracing">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
        <add name="xml"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="Error.svclog" />
    </sharedListeners>
  </system.diagnostics>
</configuration>

ログファイルを表示するには、「C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe」を使用できます。

「SvcTraceViewer.exe」がシステムにない場合は、「Microsoft Windows SDK for Windows 7および.NET Framework 4」パッケージからダウンロードできます。

Windows SDKダウンロード

すべてをインストールする必要はなく、「。NET開発/ツール」の部分のみをインストールします。

インストール中に無意味なエラーが発生した場合/その場合Windows 7 SDKのインストールの失敗に対するPetopasの回答で問題が解決しました。


18
ファイルが生成されたところはどこにありますError.svclogか?
Nick Kahn

4
ファイルは、アセンブリと同じディレクトリに生成されます。おそらくあなたのbinディレクトリ。サービスがIISでホストされている場合は、ワーカープロセスをリサイクルする必要があります。
Rohan West

9
アプリケーションプール-IDに、そのフォルダーへの書き込み権限があることを確認してください。私は通常、アプリケーションプールに割り当てられた専用アカウントを持っています。これにより、その特定のユーザーに読み取り/書き込みアクセス権を付与できます
Rohan West

2
開発環境では、エラーファイル(initializeData = "Error.svclog")がソリューションプロジェクト内に保存されます。他の場所に変更しても機能しませんでした。
LCJ、2012

5
これを使用してフォルダにログを記録するようにできました:initializeData = "C:\ wcflogs \ wcf_svclog.svclog" />
Adrian Carr

32

(サーバー上の)web.configに追加

<system.diagnostics>
 <sources>
  <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
   <listeners>
    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\logs\Traces.svclog"/>
   </listeners>
  </source>
 </sources>
</system.diagnostics>

1
フォルダー以外はdevにアクセスできないため、このように追加しましたinitializeData="\\servername\drive$\Project\WCFTraces.svclog"/>。サービスにアクセスしようとした後、ファイルが生成されたことがわかりません。
Nick Kahn

5
デフォルトではバッファリングされています(これを変更できる場合があります)。アプリプールをリサイクルすることで、強制的にフラッシュすることができます。また、アプリプールIDがその場所に書き込めることを確認してください。
クリストフ

20

Microsoft SDKsディレクトリに移動します。このようなパス:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools

そのディレクトリからWCF構成エディター(Microsoftサービス構成エディター)を開きます。

SvcConfigEditor.exe

(このツールを開く別のオプションは、Visual Studio 2017で[ツール]> [WCFサービス構成エディター]に移動することです)

wcf構成エディター

.configファイルを開くか、エディターを使用して新しいファイルを作成し、Diagnosticsに移動します。

そこで「Enable MessageLogging」をクリックできます。

メッセージロギングを有効にする

詳細:https : //msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx

同じディレクトリのトレースビューアを使用して、トレースログファイルを開くことができます。

SvcTraceViewer.exe

WMIを使用してトレースを有効にすることもできます。詳細:https : //msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx


2
このGUIユーティリティをご紹介いただきありがとうございます。設定ファイルの編集がずっと簡単になります!
symbiont 2016

Awesome.itは、トレースログを理解するのに大いに役立ちます。
ksrds

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.