1

我的应用环境:基于web、Spring MVC+Security、Hibernate、MySQL(InnoDB)

我正在开发一个从 Web 界面操作的小型数据库应用程序。有特定和已知的用户处理存储的数据。现在我需要跟踪用户在数据库上执行的每个创建/更新/删除操作,并从中生成简单的“类似列表”的报告。截至目前,我正在考虑一个“日志”表(列:userId + timestamp + description 等)。我猜想在这个表中插入日志行的任何 C(R)UD 操作都会触发一个方面。但我不确定这是应该如何做的。

我也知道通常的 MySQL 日志以及 log4j。至于日志文件,我可能需要比 MySQL 可用的信息更多的信息。Log4j 可能是一个解决方案,但我看不到它是如何写入 MySQL 表的。另外,我希望在我的日志表中保留一些关联(例如用户 ID),以让数据库进行基本过滤等。对此表示赞赏。

你会推荐什么?Hibernate/Spring 中是否有任何内置支持,或者 log4j 是正确的方法?

谢谢!

4

3 回答 3

2
  1. Log4j 是模块化的,如果您愿意,您可以编写自己的后端,将日志写入数据库;事实上,它甚至还附带了一个开箱即用的JDBC 附加程序,尽管请注意那里的大红色警告。
  2. 对于 Hibernate,您可能可以在拦截器和事件上构建一些东西来跟踪所有修改并将它们记录到特殊的审计表中。
于 2009-04-29T21:58:28.713 回答
1

您是否考虑过使用 MappedSuperclass 进行 C(R)UD 操作日志记录?

@MappedSuperclass
public class BaseEntity {
@Basic
@Temporal(TemporalType.TIMESTAMP)
public Date getLastUpdate() { ... }
public String getLastUpdater() { ... }
...
}

@Entity class Order extends BaseEntity {
@Id public Integer getId() { ... }
...
}
于 2009-04-29T22:22:42.930 回答
0

如果您寻求日志记录解决方案并自己寻找,请尝试搜索 JDBCAppender,它并不完美,但应该可以工作。

如果您想要现成的集中式日志记录产品 - 考虑尝试logFaces - 它可以直接写入您自己的数据库(披露:我是该产品的作者。)

于 2009-04-29T22:01:59.953 回答