如何在所有方法的开头发起一个 "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
您也可以考虑使用其中之一:
我正在开发 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
您也可以考虑使用其中之一: