日志记录-调试与信息-在每个级别包含什么



我已经将NLog添加到我的ASP.Net Core项目中,我即将在各处添加日志记录,但在此之前,我想获得一些关于我应该在各个日志级别记录什么的建议(特别是调试和信息)。

我会有一个记录器每类。

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

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

我是否应该只记录调用该操作,如果成功,可能在方法末尾添加一个log.info(),而不记录任何参数或结果?

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

在这些方法中,在开始和结束时也在信息级别进行日志记录是常见的吗?同样,这只是记录它被调用的情况和第二个log.info()来指示它成功完成了吗?还是信息的细节太多了?

建议的审计方法是什么?(可能相当客观)。最合适的日志记录级别可能是信息,但它会与更基本的信息日志记录混合在一起。如何合理地将两者分开(即,两者都记录在同一日志级别,但在日志中保持分离)。我看到NLog有过滤日志的能力,所以我想我可以在每个与审计相关的log.info()前面加上"审计",但这似乎有点脏。

当然这是基于意见的,但我遵循以下规则:

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

在的开始和结束时,是否也在这些方法的信息级别进行日志记录

在我看来,仅在跟踪级别。

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

  • 警告:异常/错误,但继续应用程序
  • 错误:异常/错误,但没有继续应用程序
  • 致命:写入错误日志时出错,需要手动干预的操作

建议的审计方法是什么?(可能相当客观)。最合适的日志记录级别可能是信息,但它会与更基本的信息日志记录混合在一起。如何合理地将两者分开(即,两者都记录在同一日志级别,但在日志中保持分离)。

创建一个单独的记录器和规则。例如

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

配置:

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

最新更新