ロギングは常に私にとって悪夢でした!ここで、プロキシシステムに再度実装する必要があります。このプロキシアプリケーションでは、一部のシステムがプロキシシステムに他のサービスを呼び出すように要求します。私が記録しなければならないのは
- リクエスト時間
- リクエスターIP
- XMLとしてパラメータをリクエストする
- 要求されたサービス名
- 要求されたサービス方法
- 反応時間
- XMLとしての応答データ
- 応答メッセージ(例外が発生した場合は、メッセージとしてログに記録されます)
メソッドに2行を追加することを検討しました。
// Log Request
Task.Factory.StartNew(() => Logger.Log(RequestParameters.ToXML(),Assembly.GetCallingAssembly().FullName, MethodBase.GetCurrentMethod().Name, DateTime.Now));
// Invoke requested service and get response
// Log Response
Task.Factory.StartNew(() => Logger.Log(Response.ToXML(), DateTime.Now));
ネストされたトランザクションもログに記録したいと思います。
トランザクションに要求と応答が含まれていると想定します。トランザクションには、他の多くの内部トランザクションが含まれる場合があります。リクエストを受け取ったら、トランザクションを登録し、リクエストを挿入する必要があります。後で、レスポンスを受け取ったら、トランザクションのレスポンスを更新する必要があります。追跡を改善するために、リクエストとレスポンスの関係を保存しようとしていることに注意してください。
このロギングプロシージャをメソッドに安全に追加するにはどうすればよいですか?開発者がこのロギングシステムをすべてのメソッドに実装するように制限したいのですが、メソッド本体のインターフェイスや継承などが必要です。属性でこれを行うことはできますか?では、どうやって?