コード内でロギングを行う必要があります。いくつかの情報を記録するには、社内で開発したライブラリを使用する必要があります。仕組みは次のとおりです。
Recorder recorder = Recorder.StartTiming();
DoSomeWork();
recorder.Stop(); // Writes some diagnostic information.
Stop()が常に呼び出されるようにするために、クリーンな「using」ブロックを許可するラッパークラスを作成しました。
using (RecorderWrapper recorderWrapper = new RecorderWrapper) // Automatically calls Recorder.StartTiming() under the covers
{
DoSomeWork();
} // When the recorderWrapper goes out of scope, the 'using' statement calls recorderWrapper.Dispose() automatically - which calls recorder.Stop() under the covers
これまでのところうまく機能しています。ただし、私の会社が要求している変更があります。これは、元のコードでは次のようになります。
Recorder recorder = Recorder.StartTiming();
try
{
DoSomeWork();
}
catch (Exception ex)
{
recorder.ReportFailure(ex); // Write out some exception details associated with this "transaction"
}
recorder.Stop(); // Writes some diagnostic information.
RecorderWrapperで「使用する」スコープブロックすべてでtry/catchを回避したいと思います。「ReportFailure()」呼び出しに対応し、「using」スコープブロックを活用する方法はありますか?
具体的には、チームの全員が「成功の落とし穴に陥る」、つまり正しいことを簡単に行えるようにしてほしいと思っています。私にとって、これは、recorder.Stop()を呼び出すことを忘れたり、try/catchを忘れたりすることを本当に難しくすることを意味します。
ありがとう!