Logging 一个人应该做多少检查(简单的jQuery日志函数)
我创建了一个简单的jQuery函数,用于开发人员事件和错误记录。。。它调用一个web服务函数,该函数只将几个传递的参数记录到名为EventLog的日志表中 其中一个参数(logEventStr)只是一个限定日志事件的字符串。。。例如“调试”、“错误”、“用户”、“信息”。。。等等。我在另一个表中有所有这些事件类型,称之为EventTypes,索引(即1=调试,2=信息,3=用户…),并通过外键约束链接到日志表中的eventId列 因此,在代码审查期间,有人建议/争辩说,应该对该日志事件字符串进行一些初始检查,因为“开发人员可能会在logEventStr参数中错误键入事件类型”。我解释说,我在web服务中有代码,用于检查有效的事件字符串,并抛出在Ajax调用的失败事件中处理的异常。。。它甚至会将拼写错误的事件名错误打印到控制台,这样开发人员就可以立即知道自己搞错了,并将其更正。进一步的“讨论”指出,EventTypes中的索引应该在javascript中硬编码(可能是JSON对象),并在进行web服务调用之前进行检查。这对我来说似乎很愚蠢,因为现在开发人员必须跟上EventTypes表中的更改,并让它们手动与硬编码的JSON对象同步。最后,我在某种程度上同意使用另一个web服务调用填充JSON对象,该调用返回EventTypes表的内容并缓存它,这样在第一次命中时就可以进行一次性调用。然而,我仍然认为,即使这样也没有必要。。。日志功能只供开发人员使用,而logEventStr永远不会由最终用户指定 我的问题是。。。哪种技术是正确的?对于像日志功能这样简单明了的功能,开发人员专用的功能,需要进行多少检查Logging 一个人应该做多少检查(简单的jQuery日志函数),logging,Logging,我创建了一个简单的jQuery函数,用于开发人员事件和错误记录。。。它调用一个web服务函数,该函数只将几个传递的参数记录到名为EventLog的日志表中 其中一个参数(logEventStr)只是一个限定日志事件的字符串。。。例如“调试”、“错误”、“用户”、“信息”。。。等等。我在另一个表中有所有这些事件类型,称之为EventTypes,索引(即1=调试,2=信息,3=用户…),并通过外键约束链接到日志表中的eventId列 因此,在代码审查期间,有人建议/争辩说,应该对该日志事件字符串进行
这个周末我一直在考虑这个问题,但它仍然困扰着我。当然,也许这两种方法都不正确,所以我们欢迎其他的想法 为什么不为每个日志事件类型创建一个包装器函数 如果原始函数是
log
,并且使用方式如下:
log("user", "is a zombie");
log.user("is a zombie");
这可以改写为:
logUser("is a zombie");
其中logUser
只需使用参数user
调用log
另一种方法是使log
成为一个具有各种功能的对象,因此您可以这样使用它:
log("user", "is a zombie");
log.user("is a zombie");
等等
使用您的日志机制的开发人员不应该为其内部结构而烦恼,因为我们在这里处理的是一个日志系统,日志类型的数量是有限的,所以如果您预先列出数据库中存在的、不需要修改的、经过深思熟虑的日志类型列表,那就不必担心将来会发生什么事了
编辑(根据评论):
从您的问题中,我看到有两个表,EventLog
和EventTypes
。我假定EventLog
有两列:
- 事件
- 事件
EventTypes
也有两列:
- 事件
- 事件描述
EventTypes
表是一个可以更改的表,也可以添加新的事件类型。这也意味着可以添加一行
这两个表不会以添加或删除列的方式进行修改
EventTypes
或多或少是“固定”的,每个事件类型都与一个数字相关联。这个数字应该是数据库和Javascript之间的“协议”
因此,如果您有这样的三行:
log("user", "is a zombie");
log.user("is a zombie");
- 1 |调试
- 2 |信息
- 3 |用户
log("user", "is a zombie");
log.user("is a zombie");
- log.debug
- log.info
- 日志用户
log("user", "is a zombie");
log.user("is a zombie");
- 4 |误差
- 日志错误
您只需告诉您的开发人员“从现在起,您有了一个新功能,其他所有功能都将像以前一样工作”,然后继续您的业务。Hmm。。。有点喜欢这个想法(log.user)。更妙的是,这些内部事件类型很少发生更改,并且会处理“拼写错误”的可能性。你对本次讨论的哲学方面有何看法?我看到你明白了我这个尴尬问题的症结所在,是的,我的意思是“开发人员必须跟上事件类型”,而不是事件日志。您的附录现在更有意义了,因为添加一个函数相当于添加另一个事件类型,这是应该的。我更喜欢它,因为它解决了我必须在两个方面跟上列表的问题——即客户端和数据库端。