2012-05-28 31 views
9

これらのサービス用のいくつかの.Net WCFサービスがあります。読み取り可能な.svclogファイルに送受信されたメッセージを記録するapp.configファイルを構成しました。 「Service Trace Viewerツール」(SvcTraceViewer.exe)を実行します。このツールは、処理中のSOAPメッセージをログファイルにきれいに表示します。.Netログファイル管理(ローリング)を使用したWCFサービストレースログ

サービストレースビューアツールで処理できる.svclogファイルを正しくフォーマットするには、System.Diagnostics.XmlWriterTraceListenerリスナーを使用する必要があります。

.svclogファイルが大きすぎる&サービストレースビューアツールが応答時間が遅いために使用できなくなるという問題があります。

サービストレースビューアツールでは、ファイルサイズが40MBを超える場合でもログファイルの一部を開くことができますが、これはまだ遅すぎます。 app.configファイルには、.svclogを設定して毎日新しいファイルを自動的に作成する機能や、ファイルが一定のサイズになる機能がないようです。

ログファイルを毎日ロールするlogfilecreationschedule = "Daily"プロパティをサポートするMicrosoft.VisualBasic.Logging.FileLogTraceListenerというテキストログリスナーがありますが、このリスナーからのログファイルは操作サポート担当者にとっては困難ですログエントリとして使用することはうまく表現されず、大きなxmlドキュメントが混乱の原因となります。

この分野のベストプラクティスは、ビルドされたSystem.Diagnosticsのログファイルロール機能が不足していることを考えると、余計なカスタムWCFログ拡張機能を作成する必要があるようです。 XmlWriterTraceListenerログリスナー/アペンダー。

また、アプリケーションを停止してログファイルの名前を変更するスクリプトを試しましたが、Windowsではhandle.exeとopenfileユーティリティがネットワーク共有経由で開かれたファイルを閉じることができないため、これは可能ではないようです誰かがネットワーク共有を介してブラウズしている場合、古いログファイルの名前を変更したり移動したりすることはできません。まもなく別の質問が掲載されます。

ありがとう、 Matt。

+0

それはなんとかですが、あなたは、WCFトレースがすべての時間を有効にしていることになっていません。トラブルシューティングのアプローチとして設計されており、パフォーマンスに影響します。運用環境で無効にするのがベストプラクティスです。 –

答えて

9

自分で開発することも、既存の特化XmlWriterTraceListenerを使用することも、円形のトレースログメカニズムを使用することもできます。

CodeProjectの上でトレースローリングログを行いXmlWriterTraceListenerの専門実装があります:円形で

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

はあなたが所望の全トレースログデータの半分にすることができ、各店舗までの2つのファイルを持っているトレース。リスナーは1つのファイルを作成し、データサイズの半分に達するまでそのファイルに書き込みます。データサイズの半分に達すると、それは2番目のファイルに切り替わります。リスナーが2番目のファイルの制限に達すると、最初のファイルを新しいトレースで上書きします。

http://msdn.microsoft.com/en-us/library/aa395205.aspx

+0

Sergioさん、ありがとうございました。あなたのWCFがあなたのウェブ検索能力をはるかに超えています。どちらかといえば、とても感謝しています。どちらのソリューションも実行可能です。私はまだどちらを行くのかわからない。私は両方を試みるかもしれない。 – MattG

関連する問題