最も簡単な答えはこれだと思います。基本的にできることは、wcf サービスのカスタム トレース リスナーを定義することです。必要な結果を得るために例を変更できます。
カスタム トレースの実装は次のようになります。
namespace WcfTrace.Trace
{
public class WebTraceListener : TraceListener
{
public override void Write(string message)
{
//write you custom code here
Debug.WriteLine(message);
}
public override void WriteLine(string message)
{
//write your custom code here
Debug.WriteLine(message);
}
}
}
サービス ホストの構成には、次のものが含まれている必要があります。
<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>
</sources>
<sharedListeners>
<add name="xml" type="WcfTrace.Trace.WebTraceListener,WcfTrace.Trace" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="300000"
maxSizeOfMessageToLog="200000"/>
</diagnostics>
</system.serviceModel>
個人的に私はこのアイデアが好きです。クライアントから独立したトレーサー クラス (あなたが言及したリストボックスを持つアプリ) は、このカスタム トレース実装からの情報を消費することができます。