一般的に次のことを行うソリューションを探しています。
- すべてのユーザー アクションをログに記録します。可能であれば、コントローラー名、アクション、およびパラメーターの形式で
- また、実際に変更されたモデル オブジェクトのみを記録します。たとえば、コントローラーはパラメーターの長いリストを取得する場合がありますが、実際にモデル オブジェクトに保存されるのはそのうちの 2 つだけです。変更された属性を知りたいです。
- このデータは照会できます。たとえば、CRM アプリケーションでのユーザーのアクションの履歴を検索できます。
複数のアプリケーション (すべて同じデータベースにヒット) 用の共有モデルのセットアップがあるため、データがどのアプリケーションから来たかを記録できます。これは、私たちのアプリケーションに共通する中央の場所で、このようなものを実装したい場所です。
これを行う理由は、事後に多くのフォレンジックを行うためです。誰がレコードに何かを変更したかを確認するように求められるため、多くの場合、運用ログに移動してそこでその情報を検索する必要があります。可能であれば、標準 SQL を使用する代わりにクエリを実行できるようにしたいと考えています。
これを行うもう 1 つの理由は、さまざまな開発者がさまざまなアプリケーションを所有しており、一部のアプリケーションが本来の動作をしないことがあるためです。どのアプリケーションが特定の値をモデル オブジェクトに保存したかを調べることができれば、それが役に立ちます。
どのコントローラー名/アクションを確認するかについてのパターンはまったくありません。いくつかのモデルに監査ロジックを追加しましたが、監査を設定していない別のモデルについて何かをチェックアウトするように求められます。為に。
理にかなっていれば、この目的のために Redis のようなものを喜んで使用します。私は Redis を使った経験がほとんどなく、Redis がこのようなことを処理できるかどうかはわかりません。
これは、すべてのユーザー アクションをログに記録できるという現実的な期待ですか? おおよそ、さまざまなアプリケーションから 1 時間あたり合計で 300 ~ 500 のユーザー アクションがあると見積もっています。それとも、この可能性を探るのをやめて、一般的なユーザー アクションをどのように追跡するべきかについて、既成概念にとらわれずに考える必要がありますか?