如何让系统操作可追溯?事件驱动架构打造后台日志系统的实践
副标题:3大核心优势+2个业务场景,构建可靠的操作审计体系
一、设计原理:事件驱动如何解决日志记录难题?
想象一个繁忙的公司前台,每当有重要访客进出,前台都会记录在登记簿上。但如果每个部门都需要单独记录访客信息,不仅重复劳动,还可能遗漏关键记录。传统后台系统的日志记录就面临类似问题——业务代码中散落着大量日志打印语句,既污染代码,又难以维护。
admin3框架采用"事件驱动"架构,就像建立了一个中央信息处理中心。系统中所有重要操作(如用户登录、权限变更)都会被封装成"事件",这些事件统一实现DomainEvent接口,确保格式一致性。当用户登录系统时,就像访客在前台留下信息,系统会自动发布一个UserLoggedIn事件,而不是让每个业务模块单独记录。
图1:admin3系统日志界面展示了各类事件记录,包括用户登录、角色更新等操作,体现事件驱动架构的实践成果
💡 设计技巧:将事件定义与业务逻辑分离,所有事件类集中放在sys/event/目录下,这样新增事件类型时只需添加新的事件类,无需修改现有业务代码。
二、实践应用:从事件发布到日志展示的完整路径
事件驱动日志系统的工作流程可以比作报社的采编发流程:
-
事件采集(记者采访):业务代码中通过
DomainEventPublisher发布事件,就像记者收集新闻素材。例如用户更新操作会触发UserUpdated事件。 -
事件存储(编辑排版):EventStoreService负责将事件持久化,相当于编辑部将稿件存入数据库。
-
日志展示(报纸发行):LogService从数据库获取事件数据,转换为
LogDTO对象提供给前端,最终展示在"操作日志"界面。
这个流程确保了每个操作都被完整记录,且业务代码保持纯净。当管理员在权限管理界面修改资源时(如图2),系统会自动发布ResourceUpdated事件,整个过程无需业务代码关心日志如何记录。
图2:管理员编辑权限资源时,系统自动触发事件记录,体现事件驱动架构在权限管理场景的应用
三、场景价值:事件驱动日志系统的业务赋能
1. 金融交易审计场景
某支付平台使用admin3框架构建后台系统,通过事件日志实现每笔交易的全程追踪。当操作员处理转账业务时,系统会依次触发TransactionCreated、FundsDeducted、TransactionCompleted等事件。监管机构检查时,可通过日志系统完整回溯交易流程,确保合规性。
2. 医疗数据变更追踪
在医院信息系统中,患者病历的每次修改都会触发MedicalRecordUpdated事件,日志系统记录修改人、修改时间和具体变更内容。当出现医疗纠纷时,可通过日志还原数据变更历史,明确责任归属。
💡 扩展技巧:通过自定义事件类型和处理器,可实现更复杂的业务需求。例如为敏感操作事件添加自动通知功能,当检测到异常登录事件时,自动向管理员发送告警邮件。
四、总结:事件驱动日志系统的核心价值
admin3框架的事件驱动日志系统通过"发布-订阅"模式,实现了业务逻辑与日志记录的解耦。这种设计带来三大优势:一是代码更简洁,业务开发者无需关注日志细节;二是系统更可靠,事件一旦发布就能确保被记录;三是扩展更灵活,新增操作类型只需添加对应事件。
无论是企业内部系统的操作审计,还是面向监管的合规需求,事件驱动架构都能提供高效可靠的日志解决方案。通过学习admin3的实现方式,开发者可以构建出既满足当前需求,又具备未来扩展能力的日志系统。
项目完整代码可通过以下地址获取:
git clone https://gitcode.com/gh_mirrors/ad/admin3
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
LazyLLMLazyLLM是一款低代码构建多Agent大模型应用的开发工具,协助开发者用极低的成本构建复杂的AI应用,并可以持续的迭代优化效果。Python01