2011-08-02 15 views
2

Webアプリケーションがあり、ログイン、dbへの挿入、dbへの更新、起動された例外などのほとんどのユーザーアクションを監査したいと考えています。C#と.NETでの監査

私のセニオスの1人は、パフォーマンスを向上させるためにキューを使用するよう提案しました。イベントを入力するだけで、処理が完了するまで待たずに自動的に処理されます。

あなたの提案は何ですか?私はそれらをどのように処理すべきですか?それらをエンキューすることは問題ありませんが、メソッドを呼び出すボディがないまま処理される方法がわかりません。

私は単純に、安定したサポートである既製品ロギングフレームワークをお勧めします.NET 4.0

+0

本当に監査機能が必要なのか、単にログを記録する必要がありますか? – ccellar

+0

@ckellerファイルに物事を記録する必要があります。また、それらをデータベースに保存する必要があります。私は変更されたもの、挿入されたもの、例外が発生した時などをログに記録します –

答えて

7

とC#を使用しています。 log4netのようなロギングフレームワークを検討しましたか?

MSMQにログインするためのカスタムアペンダーを書くことができます。

+0

これはオプションではないので考慮しませんでした。基本的に、このアプリケーションに使用される監査フレームワークを構築する必要があります。未来のもの –

+0

@ライアンは車輪を再構築しないでください。NLogやlog4netのような成熟したロギングフレームワークをあなたの仕事のベースとして使うことができます – ccellar

+0

@Armbrat - ありがとう私はlog4netも見ています。最初はlog4jを参照していましたが、それはJavaのために困惑していました –

2

代替ロガーは、TracerXと呼ばれます。これはC#で書かれており、高速かつ柔軟性があります。ソースコードは利用可能であるため、必要に応じて変更することができます。出力をフィルタリングするビューアが付属しています。

http://tracerx.codeplex.com/し、それを使用する方法の記事:

http://www.codeproject.com/KB/dotnet/TracerX.aspx

2

二、実際に興味のあるトピック:

  • 非同期ログ
  • アスペクト指向の機能

非同期ログはsp重度の処理を100倍にしました。ログを100msごとにログ・シンクにダンプする書き込みスレッドを使用しますが、アプリケーション停止時にシンクをフラッシュできるように、ロギング・エンジンを確定的に起動および停止する必要があります。

アスペクト指向プログラミングは、クロスカッティングの問題に対処しました。監査/ログ呼び出しは、希望の操作プロローグ/エピローグで呼び出されます。PostSharpプロジェクトを参照してください。

3

私はおそらく助けることができるライブラリに取り組んできました。

Audit.NETと異なるデータストレージに異なるシステム(WCFMVCWebApiEF)とストアのログを監査するその拡張機能(SQLMongoDBDocumentDB、ファイル、EventLogに)んを設定するには、あなたの柔軟性を提供しますあなたは監査したいとここであなたは監査ログを保存したいですか?