记录 - 调试与信息 - 每个级别包含的内容

时间:2017-01-08 19:43:30

标签: .net logging nlog postsharp

我已经将NLog添加到了我的ASP.Net核心项目中,并且我即将在各地进行日志记录,但在此之前,我想知道我应该在各种日志中记录的内容级别(特别是调试和信息)。

我每班有1个记录器。

在我的控制器中,我认为在每个操作的开头和结尾都有一个log.Debug()行是有意义的,其中包含所有参数的详细信息以及操作结束时的结果(两者)其中可以通过actionFilter实现。

那么我应该在信息级别记录什么? (假设调试级别将关闭,直到我需要调试问题)。

我是否应该仅仅记录调用该操作,如果成功,可能会在方法结尾处添加额外的log.info(),而不记录任何参数或结果?

控制器调用的所有方法怎么样? 我想要至少在调试级别记录那些输入和输出,所以将它们放在那些方法中而不是在方法之外(即在它之前和之后)可能是有意义的吗? (我已经看到PostSharp Diagnostics可能非常适合这种情况 - 以前从未使用过它。)

在开始和结束时记录这些方法中的信息级别是否常见,再次,它是否只是记录它被调用而第二个log.info()表示它是成功完成,还是信息太详细了?

关于审核的推荐方法是什么?(可能非常客观)。 最合适的日志记录级别可能是信息,但随后它将与您更基本的信息日志记录混合在一起。 你如何明智地将两者分开(即两者都记录在相同的日志级别,但在日志中保持独立)。 我看到NLog能够过滤日志,所以我想我可以坚持"审计"在每个与审计有关的log.info()的前面,但这看起来有点脏。

1 个答案:

答案 0 :(得分:1)

当然这是基于意见的,但我遵守这些规则:

  • 始终启用信息级别,因此请记录重要事件,例如"发送邮件","登录用户"。如果"登录用户"对您的系统来说并不重要,那么我会将其记录为调试。
  • 调试级别仅用于调试问题。在此级别上,每种方法最多只能有一条消息。例如。 "准备邮件到foo @ bar","查看图片邮件"等
  • 跟踪级别将包含性能测试和/或获取所有详细信息的详细信息。例如,方法名称和所有参数。
  

在开始和结束时记录这些方法中的信息级别是否常见,

仅在我认为的跟踪级别。

对于其他三个级别,我们有以下规则:

  • 警告:例外/错误,但继续申请
  • 错误:异常/错误,但没有继续申请
  • 致命:写入错误日志时出错,需要手动干预的操作。
  

关于审核的推荐方法是什么?(可能非常客观)。最合适的日志记录级别可能是信息,但随后它将与您更基本的信息日志记录混合在一起。你如何理智地将两者分开(即两者都记录在相同的日志级别,但在日志中保持分开)。

创建单独的记录器和规则。 E.g。

var auditingLogger = LogManager.GetLogger("auditing");

配置:

<logger name="auditing" minlevel="Info" writeTo="auditing-file" />