AspNetCore开发笔记:进一步实现非侵入性审计日志功能
💡
原文中文,约9300字,阅读约需23分钟。
📝
内容提要
本文介绍了作者对之前实现的审计日志功能进行重构的过程。作者将之前分散在各个目录中的与审计相关的代码整合到了一个目录中,提高了代码的可维护性。作者还对AuditLog类进行了重构,将实体变化内容从AuditLog中分离出来,使用List<EntityChangeInfo>类型的属性来存储实体变化。作者还对AuditLogAttribute类进行了修改,简化了参数,只需要传入EventType即可。最后,作者介绍了如何获取实体变化,并使用FreeSQL的Aop.CurdBefore事件来实现实体变化的监控。作者还提供了扩展方法来方便使用该功能。最后,作者展示了使用效果,并介绍了AuditLog中间件的作用。
🎯
关键要点
- 作者重构了审计日志功能,实现了对业务代码的完全无侵入审计。
- 将与审计相关的代码整合到一个目录中,提高了代码的可维护性。
- 创建了EntityChangeInfo类,用于保存实体变化信息。
- 重构了AuditLog类,将实体变化内容分离到EntityChanges属性中。
- 修改了AuditLogAttribute类,简化了参数,只需传入EventType。
- 实现了FreeSQL的实体变化监控,通过Aop.CurdBefore事件获取实体变化。
- 提供了扩展方法以便于注册服务和中间件,符合AspNetCore开发习惯。
- 展示了使用效果,审计日志成功记录在MongoDB中。
- AuditLog中间件在每个请求中生成EventId并存储在HttpContext.Items中。
🏷️
标签
➡️