0

例外をログに記録するのではなく、ユーザーアクティビティとそれらがデータに対して行うことをログに記録するログシステムを作成したいと思います。たとえば、ユーザーがレコードを削除したときに、ユーザー名、レコードID、日付、および...をログに記録したいとします。

最初に、ログクラスを作成し、そのメソッドを他のすべてのクラスのメソッド内で使用することにしました。しかし、ブログを読んでSOを検索した後、このアプローチはOOPのSRP原則に反していることがわかりました。

今、私は別の解決策を考えています。私はまだログクラスを持っています。ただし、コード全体でメソッドを呼び出す代わりに、イベントを使用する必要があります。他のクラスによって呼び出されるイベントをサブスクライブするリスナークラスを追加することを考えています。

ページに注文を削除するメソッドがあるとします。

protected void DeleteOrder(Order order)
{
    Orders.Delete(order);
    DeletedEvent(this,order); 
}

次に、サブスクライバーは送信されたデータを使用してログを作成します。このクラスはオブジェクトタイプをチェックし、タイプに応じて適切なプライベートメソッドを呼び出し、オブジェクトのプロパティを使用してログを作成します。

これは一般的に適用できますか?もしそうなら、これは良いアプローチですか?前もって感謝します

4

1 に答える 1

1

はい、あなたのアプローチは良いです。

これはMVC.NETアプリケーションですか?この記事を見てください:

http://weblogs.asp.net/shijuvarghese/archive/2011/07/18/user-activity-logging-in-asp-net-mvc-app-using-action-filter-and-log4net.aspx

于 2012-09-26T12:43:37.343 に答える