在Web应用程序中记录用户更改的日志

时间:2013-08-22 05:00:32

标签: java mysql tomcat struts-1

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

2 个答案:

答案 0 :(得分:1)

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

要实现这一点,首先需要

  1. 创建审核表

    • 显然,您希望跟踪最后修改的人员,时间戳,由等创建的等等。
  2. 执行某些更改/操作时创建日志记录机制。

    • 实现此目的的方法很少,您可以通过应用程序执行此操作,也可以将所有内容保留为数据库触发器。我建议使用触发器来检测数据库中的任何Create / Update / Delete事件,并要求触发器捕获详细信息并写入Audit表。我认为这是最简洁,维护较少的方式。但是,如果要使用应用程序进行日志记录,则必须进行代码更改,创建新方法以将详细信息捕获到操作类中的Audit表。
  3. 有关MYSQL Trigger here

    的更多信息

答案 1 :(得分:-1)

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

  

使用文件系统时,最好单独使用   分区比操作系统使用的分区,其他应用程序   文件和用户生成的内容对于基于文件的日志,请应用strict   关于哪些用户可以访问目录的权限,以及   目录中文件的权限在Web应用程序中,   日志不应在Web可访问的位置公开,如果已完成   所以,应该限制访问并配置纯文本   MIME类型(不是HTML)使用数据库时,最好是   利用仅用于写日志的单独数据库帐户   数据和数据库,表,功能和限制非常严格   命令权限使用安全协议的标准格式   记录并将事件数据或日志文件发送到其他系统,例如共同   日志文件系统(CLFS),syslog上的公共事件格式(CEF),   未来可能的共同事件表达(CEE);标准格式   促进与集中式日志记录服务的集成

他们精美地解释了我们可以记录的方式,应该记录的内容,以及应该避免的内容。

希望它对你有用。