ブログトップ 記事一覧 ログイン 無料ブログ開設

tekkの日記 C#,VB.NET このページをアンテナに追加 RSSフィード Twitter

人気記事 No.1 どんなオブジェクトでもコピーできる汎用のディープコピー処理   codeplexにて公開しているオープンソースプロジェクトcreate hyper-v Server USB Memory

おすすめ記事!Windows 8 を体験しよう。気軽に試せるVHDインストール。みんなで試そう。Go Metro!

2009-11-12

WCF入門-09。トレースログを出力する。(System.ServiceModel.MessageLogging)

00:06 | WCF入門-09。トレースログを出力する。(System.ServiceModel.MessageLogging)を含むブックマーク

サンプルコードWCFService-09.zip 直

WCFでは、アプリケーション構成ファイル(app.config)に、トレースログ出力の設定をするだけでWCFの処理の追跡・クライアントサーバー間でやりとりされるSOAPメッセージをログに出力することができます。通信データをログに出力するには、System.Diagonostics要素にSystem.ServiceModel.MessageLoggingトレースソースを設定します。system.diagnostics要素の設定例を以下に示します、サーバ側もクライアント側も設定は同じです。


<configuration >
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="traceListener"

type="System.Diagnostics.XmlWriterTraceListener" initializeData= "c:\service.svclog" /> </listeners> </source> </sources> </system.diagnostics> <system.serviceModel> <diagnostics> <messageLogging logEntireMessage="true"

logMalformedMessages="false" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" maxMessagesToLog="3000" maxSizeOfMessageToLog="2000" /> </diagnostics> <behaviors > <serviceBehaviors> <behavior name ="serviceBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="serviceBehavior" name="WCFService.SampleService"> <endpoint address="HelloWCF" binding="basicHttpBinding" name="basicHttp" contract ="WCFInterface.ISampleService" /> <host> <baseAddresses> <add baseAddress="http://localhost:8000/WCFService"/> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration >

例は"c:\service.svclog"に通信ログが保存されるようになります。WCFのログはサービストレースビューアで見ることができ、サービストレースビューアは拡張子.svclogに関連付けされているので拡張子は.svclogとしておきます。以下のようにSOAP-XMLがログに出力されます。

f:id:tekk:20091113000205p:image

参考:トレースログ出力時のオプション

logEntireMessage
メッセージ全体 (メッセージ ヘッダーと本文) を記録するかどうかを指定する値を取得または設定します。

true

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Header>
		<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:8000/WCFService/HelloWCF</To>
		<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ISampleService/HelloWCF</Action>
	</s:Header>
	<s:Body>
		<HelloWCF xmlns="http://tempuri.org/">
			<param xmlns:a="http://schemas.datacontract.org/2004/07/WCFInterface" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
			<a:Message>Hello WCF TextMessage</a:Message>
			<a:Type>Text</a:Type>
		</param>
		</HelloWCF>
	</s:Body>
</s:Envelope>

false

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Header>
		<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:8000/WCFService/HelloWCF</To>
		<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ISampleService/HelloWCF</Action>
	</s:Header>
</s:Envelope>

トラックバック - http://d.hatena.ne.jp/tekk/20091112/1258038405