清理跟踪

时间:2011-06-21 17:36:31

标签: c# nlog tracing

我在C#中有一个大型应用程序(> 50k loc)使用NLog进行跟踪,并且跟踪已经有些失控。有些库包含正确的跟踪(正确的级别/详细程度),其他库只是将所有内容发送到错误/信息级别。

我需要清理它以使所有错误都反映出正确的严重性。因此,当我真的想要重新启用常规异常跟踪以跟踪生产问题时,我们基本上禁用了生产跟踪。

解决这个问题的好工作流程是什么?是否有任何工具可以帮助以干净的方式跟踪所有跟踪语句?我目前正计划使用re sharper并查找所有用法,并花一些时间来解决这个问题。

更新:我在这里不清楚,我正在寻找一些关于一般跟踪的好指南,也许还有一些关于重新调整我的大型代码库的最佳方法的建议。

1 个答案:

答案 0 :(得分:1)

这是我使用的(但我使用log4net,但我猜它是一样的)

.trace() - 用于记录函数入口和出口以及巨大的数据转储等内容

for(a in l) { trace("List contents: "+ a) }

.debug() - 在考虑分支时打印1(一)行信息。 您可以在单个函数中使用多个调试语句,但不能使用1个pr行。 当您阅读调试语句时,它应该像简洁的版本一样阅读 功能

.debug("Checking if current account {} for user {} has more than {} amount", amount);
.debug("Account criteria met for account {} for user {}; making withdrawel of {}", otheramount);
.debug("Account {} debited by {} amount. Transaction key {}");

每个调试行必须独立,并包含理解它所需的所有信息。只要阅读“检查帐户级别”就行了,因为您的下一个问题是哪个帐户?什么用户?多少钱?

.info() - 最多1个或2个pr函数,并且只在高级别范围内。必须是数据完整。

.info("Withdrawel procecss complete for account {}, user {}, for amount {}");

.warn() - 非严重错误,数据已完成,因此您可以将这些错误传递给邮件程序记录器,并偶尔检查一下该邮箱。

.error() - 与警告相同,但更重要。用户被主动阻止实现其目标,因此您希望更频繁地查看这些目标。

.fatal() - 如果可能,应直接转到sysadm的寻呼机,并提供有关服务器/机器名称的信息。

除此之外,请确保每个类都有自己的记录器,基于该类,因此即使在运行时,您也可以轻松地为代码的特定区域打开和关闭日志。