私はトレースとログについて多くのことを読んでおり、問題のベストプラクティスの黄金律を見つけようとしましたが、何もありません。優れたプログラマーは優れたトレースを生成すると言いますが、それはそのように言えます。それは経験からもたらされなければなりません。
また、ここやインターネットで同様の質問を読んだことがありますが、質問が詳細を欠いているためか、私が尋ねているものと同じものではなく、満足のいく答えもありません。
そのため、デバッガーをアタッチできない場合、トレースはアプリケーションのデバッグの経験をある程度再現すべきだと人々は言います。アプリケーションの各コントロールポイントでどのパスが使用されているかを確認できるように、十分なコンテキストを提供する必要があります。
さらに詳しく説明すると、「イベントログは、詳細な制御フローではなく主要な状態をキャプチャするという点でトレースとは異なる」という点で、トレースとイベントログを区別することもできます。
ここで、System.Diagnostics
名前空間にある標準の.NETクラスのみを使用して、トレースとロギングを実行したいとします。TraceSourceクラスは静的Traceクラスよりもジョブに適していると考えました。トレースレベルを区別し、TraceSourceクラスを使用すると、イベントタイプを通知するパラメータを渡すことができ、Traceクラスを使用する必要があるためです。Trace.WriteLineIf
その後、のようなものを確認するSourceSwitch.TraceInformation
としSourceSwitch.TraceErrors
、それはさえのような性質がないTraceVerbose
かをTraceStart
。
これらすべてを念頭に置いて、次のようにすることをお勧めします。
- メソッドを開始するときに「開始」イベントをトレースします。これは、メソッドに渡されるパラメーター値のストリング表現とともに、単一の論理操作またはパイプラインを表す必要があります。
- データベースにアイテムを挿入するときに「情報」イベントをトレースします。
- 重要なif / elseステートメントで1つのパスまたは別のパスを取るときに「情報」イベントをトレースします。
- 回復可能なエラーであるかどうかに応じて、catchブロックで「クリティカル」または「エラー」をトレースします。
- メソッドの実行が終了したら、「停止」イベントをトレースします。
また、VerboseおよびWarningイベントタイプをトレースする最適なタイミングを明確にしてください。優れたトレース/ロギングを備えたコードの例があり、共有したい場合は、それが優れているでしょう。
注:ここでいくつかの良い情報を見つけましたが、探しているものはまだ見つかりません:http : //msdn.microsoft.com/en-us/magazine/ff714589.aspx