我已经将NLog添加到了我的ASP.Net核心项目中,并且我即将在各地进行日志记录,但在此之前,我想知道我应该在各种日志中记录的内容级别(特别是调试和信息)。
我每班有1个记录器。
在我的控制器中,我认为在每个操作的开头和结尾都有一个log.Debug()行是有意义的,其中包含所有参数的详细信息以及操作结束时的结果(两者)其中可以通过actionFilter实现。
那么我应该在信息级别记录什么? (假设调试级别将关闭,直到我需要调试问题)。
我是否应该仅仅记录调用该操作,如果成功,可能会在方法结尾处添加额外的log.info(),而不记录任何参数或结果?
控制器调用的所有方法怎么样? 我想要至少在调试级别记录那些输入和输出,所以将它们放在那些方法中而不是在方法之外(即在它之前和之后)可能是有意义的吗? (我已经看到PostSharp Diagnostics可能非常适合这种情况 - 以前从未使用过它。)
在开始和结束时记录这些方法中的信息级别是否常见,再次,它是否只是记录它被调用而第二个log.info()表示它是成功完成,还是信息太详细了?
关于审核的推荐方法是什么?(可能非常客观)。 最合适的日志记录级别可能是信息,但随后它将与您更基本的信息日志记录混合在一起。 你如何明智地将两者分开(即两者都记录在相同的日志级别,但在日志中保持独立)。 我看到NLog能够过滤日志,所以我想我可以坚持"审计"在每个与审计有关的log.info()的前面,但这看起来有点脏。
答案 0 :(得分:1)
当然这是基于意见的,但我遵守这些规则:
在开始和结束时记录这些方法中的信息级别是否常见,
仅在我认为的跟踪级别。
对于其他三个级别,我们有以下规则:
关于审核的推荐方法是什么?(可能非常客观)。最合适的日志记录级别可能是信息,但随后它将与您更基本的信息日志记录混合在一起。你如何理智地将两者分开(即两者都记录在相同的日志级别,但在日志中保持分开)。
创建单独的记录器和规则。 E.g。
var auditingLogger = LogManager.GetLogger("auditing");
配置:
<logger name="auditing" minlevel="Info" writeTo="auditing-file" />