正在清理跟踪

本文关键字:跟踪 | 更新日期: 2023-09-27 17:59:58

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

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

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

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

正在清理跟踪

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

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

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

.debug()-是在考虑分支时打印一(一)行完整的信息。在一个函数中可能有多个调试语句,但不能有一个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()-与警告相同,但更重要。用户被主动阻止实现他的目标,所以你想更频繁地查看这些目标。

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

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