2

在我的 Web 应用程序(java/tomcat/struts/mysql)中记录用户更改的最佳方法是什么?我提供帐户,每个帐户都有多个用户。我希望帐户管理员能够在任何给定时间查看谁做了什么。我希望能够访问所有这些。首先,我需要一种方法来了解哪些字段已更改,然后我需要将每个帐户的更改记录在他们可以看到的地方。显然,我不想减慢应用程序的速度。我在此站点上阅读了一个答案,建议保留数据库日志-在发送每个查询后查询数据库以进行更改。不知道该怎么做。

4

2 回答 2

3

这取决于您的 Web 应用程序的性质。假设您的 Web 应用程序是一个电子商务系统,它允许用户添加新产品或更新现有产品。当用户执行特定操作(例如添加新产品)时,基本目标是捕获他的用户名、操作和时间戳。更新产品也是如此,您可能想要跟踪他更新了哪些值、旧值是什么以及他何时更改。

要做到这一点,首先你需要

  1. 创建审计表

    • 显然,您想跟踪最后修改的人、时间戳、创建者等。
  2. 每当执行一些更改/操作时,创建一个日志记录机制。

    • 执行此操作的方法很少,您可以通过应用程序执行此操作,也可以将所有内容留给数据库触发器。我建议使用触发器来检测数据库中的任何创建/更新/删除事件,并要求触发器捕获详细信息并写入审计表。我认为这是最干净且维护更少的方式。但是,如果您想使用应用程序进行日志记录,则必须更改代码,创建新方法以将详细信息捕获到您的操作类中的审核表中。

有关 MYSQL 触发器的更多信息,请单击此处

于 2013-08-22T05:35:52.730 回答
-1

我正在寻找一种类似的“方法”来记录我的网络应用程序中的交易和其他内容。就在浏览 Google 时,我发现了这个链接: https ://www.owasp.org/index.php/Logging_Cheat_Sheet讲述了两种可能的日志记录方式:在数据库或文件系统的某些日志文件中......

通用日志文件系统 (CLFS)、syslog 上的通用事件格式 (CEF),未来可能还有通用事件表达式 (CEE);标准格式便于与集中式日志记录服务集成

他们很好地解释了我们可以记录的可能方式,应该记录什么,也应该避免什么。

希望对你有用。

于 2016-06-29T13:11:19.567 回答