我需要为我构建的 Web 应用程序实现审计日志记录。我正在使用Spring Boot
,MySQL
并且JPA (Hibernate)
正在开发中。我知道有一些解决方案,比如Hibernate Envers
在实体级别进行审计。问题在于,将检查这些日志的用户(构建的 Web 应用程序的管理员用户)没有实体的概念,他说的是用户操作。我的客户要求的是能够检测每个用户执行的每个操作。例如,他想列出过去 2 天内执行的所有操作。他希望看到如下表格:
用户 REQUESTED_ACTION REQUEST_TIME 详细信息 ----- ---- ------------ --------- 约翰 登录 2020-10-10 10:10 ----- John 创建评估 2020-10-10 10:12 AssessmentDay:...,结果:成功
DETAILS
列将包含与操作相关的信息,例如操作的输入和输出。此列对于每个操作都会有所不同,它可能包含文本JSON
,XML
或任何其他格式,没关系。我看到这里出现了几个问题。第一个是它需要在开发人员方面做很多工作,我。我可以Spring AOP
在@Controller
or@Service
类中应用来构建DETAILS
和其他列并保存信息,但仍然不确定这是否是一个好的解决方案。我也在考虑使用 Envers 并将Envers
审计表转换为用户希望看到的上表。我不确定这是否可能。另一种选择是按Envers
原样使用并教育用户有关实体的知识。我会很感激一些指导。