在OO的哪个阶段添加日志记录和跟踪?
我感兴趣的是在您的开发的哪个阶段添加日志记录和/或跟踪到您的应用程序?
我正在使用.net堆栈和log4net(通过commons.logging)。 一般采用TDD方法进行开发,虽然不是100%,但有时我知道没有测试覆盖率就会突然出现。 我的应用程序都坐在服务器端,例如Web服务,消耗公共汽车消息的Windows服务,asp.net mvc business admin apps。 等等..
我发现自己在应用程序服务中使用描述性logger.INFO“从存储库获取蛋糕”来装饰方法。 一些工作..“从存储库中获得5个蛋糕。”,然后一个未处理的应用程序的表单处理程序doamin记录器.FATAL意想不到的冒泡泡沫。
但是,我通常最终会回到原点并在开发结束时应用这些技术,而不是在开发开始时应用这些技术,而我可能只需要一两个。 我发现我很少修饰任何较低级别的类,例如使用记录器实现ICakeRepository,因为它似乎毫无意义。
对于通过配置开启的跟踪,我正在考虑使用IOC框架拦截方法调用和实例创建,这应该考虑到现场麻烦而不是重度跟踪人群。
我的软件分层次,每层之间有一个定义良好的API。 我倾向于从开始实现这些API的日志记录,以便对于任何给定的事务,我可以看到如何导致每个底层的API调用:如果出现错误,这将有助于将其缩小到特定层。 通过显示导致问题的所有以前正常活动的日志,日志记录还将有助于重现问题。
我也可以在每层中添加断言,并记录断言失败。
因此,日志文件通常会显示对公共API的调用序列,并从内部生成错误消息:这通常足以诊断问题。
除此之外,我还根据需要添加调试级别日志记录:在开发期间和/或发布后调试特定问题。
我关于伐木的理由部分解释如下:
为了解决已发布软件中的任何错误,我依赖于日志文件; 而且正在开发的软件也同样如此。
你说,
我发现我很少修饰任何较低级别的类,例如使用记录器实现ICakeRepository,因为它似乎毫无意义。
我说,
我的软件分层次,每层之间有一个定义良好的API。 我倾向于从开始实施这些API的日志记录...
我想我应该更好地解释我的意思是“图层”,它可能与您的“低级”课程相同或不同。
例如,我的系统可能有以下几层:
在这种情况下,我将拥有以下接口或API,它们可能值得记录:
或者,该系统可能是连接两个对等端点的组件链(不太明显与“顶层”和“底层”)。
无论如何,我正在记录的是每个组件的公共外观的API,这对于记录有好处,原因如下:
我们是TDD,所以我们基本上不再做太多的日志记录。 也许只是在顶级异常处理程序和一些战略性的地方。
记录和追踪应该是交叉担忧。 如果您使用面向方面的编程,您可以随时以声明方式添加/删除它们。
链接地址: http://www.djcxy.com/p/42797.html