我很难为小型事件日志记录框架概念化一个理智的抽象,并且在野外没有遇到任何适用于此的可比较的东西。
概述:我们的 Web 应用程序需要从服务器端记录事件。事件数据经过 json 编码以写入平面文件。事件可能是页面浏览、注册、错误条件等。
所有事件都将包含一组核心数据,例如 Web 请求信息和会话状态。任何事件都应该能够定义要记录的附加数据。
理想情况下,触发事件的界面将非常小。事件定义和数据要求应在单个配置文件中定义。数据验证和数据转换应该隐藏在这个配置文件后面。换句话说,记录事件的接口应该只需要事件名称和要在事件中转换和记录的数据结构。
我最初的想法是,将单个数据结构映射到单个函数,其职责是将数据结构转换为字典,最终将合并到最终的事件对象中,然后进行 json 编码并写入文件。我将这些称为“作曲家”功能。在 Django 术语中,配置文件中的某些内容会映射,例如,传递给视图的 HTTP 请求对象到“request_composer”函数。该函数将构造一个从该请求对象中提取的数据字典。从视图发出的事件需要传入那个“请求”对象。
我想我的问题是,是否存在我忽略的模式或抽象可以干净地转换任意数据结构并将它们合并到最终数据结构中。我觉得这种“单一数据类型映射到单一转换函数”有点笨拙和不雅。当单个转换器接受多个参数是有意义的时,它也会崩溃。