我正在寻找一种通常执行以下操作的解决方案:
- 记录每个用户的操作。如果可能,以控制器名称、动作和参数的形式
- 此外,仅记录实际更改为模型对象的内容。例如,控制器可能会获得一长串参数,但实际上只有两个参数保存到模型对象中——我想知道哪些属性发生了变化。
- 可以查询此数据 - 例如,查找用户在 CRM 应用程序上的操作历史记录
我们为多个应用程序(都访问同一个数据库)设置了一个共享模型,因此我们能够记录数据来自哪个应用程序。这就是我们希望在我们的应用程序通用的中心位置实现类似的东西的地方。
这样做的原因是因为我们在事后进行了大量取证 - 我们被要求检查谁将某些内容更改为记录,因此我们经常不得不去生产日志并在那里搜索该信息。如果可能的话,我们希望能够使用标准 SQL 来查询它。
这样做的另一个原因是因为不同的开发人员拥有不同的应用程序,有时某些应用程序的行为不应该如此。如果我能够查找哪个应用程序将特定值保存到模型对象中,那会有所帮助。
对于我们要查看的控制器名称/操作没有任何模式 - 我们在某些模型上添加了审计逻辑,但随后我们会被要求检查我们尚未设置审计的不同模型的某些内容为了。
如果有意义的话,我们愿意为此目的使用 Redis 之类的东西。我使用 Redis 的经验很少,不确定 Redis 是否能够处理这样的事情。
这是一个现实的期望 - 能够记录每个用户操作吗?我粗略估计我们每小时可能有来自各种应用程序的 300 到 500 个用户操作。或者我应该停止探索这种可能性,而是跳出框框思考我应该如何跟踪用户的一般行为?