如何在所有方法的开头发起一个 "log(all parameters)" 请求

How to launch a "log(all parameters)" request at the beginning of all methods

我正在开发 C# 项目,这些项目都使用 NLog 参考来进行日志记录。

因此,我可以在项目的任何地方添加行 log.Debug("...") 并显示一些日志记录。

我的一位同事写了一个项目,应用了很多 类 和方法,但是日志记录太少了。我想要的是,每种方法在执行开始时启动以下行:

log.Debug(<list of input parameters>);  // all parameters have a ToString() method

为了实现这一点,我正在考虑某种基本方法,例如(伪代码):

private <whatever_output_type> base_method(...){
  startup : 
    string output = "";
    for each (param) in GetParameters():
      output += ", " + param.ToString();
    log.Debug(<this_method_name>, output);
}

然后我对每个现有方法执行以下操作:
替换:

private void Method1 (int i1, int i2, string S1, SomeClass obj1)
{ ... }
public void Method2 ()
{ ... }

作者:

private void Method1 (int i1, int i2, string S1, SomeClass obj1) : base_method
{ ... }
public void Method2 () : base_method
{ ... }

为了获得更具可读性的日志记录,我会根据调用堆栈帧数使用缩进,如 this URL 中所述,但让我们先开始这项工作。

为此,我需要以下内容:

提前致谢

也许结合这个:

public static void InfoParams(this ILoggger logger, params object[] list)
{
    logger.Info("{@params}", (object)list);
}

另请参阅:https://github.com/NLog/NLog/wiki/How-to-use-structured-logging

您也可以考虑使用其中之一: