C#方法参数重视日志自动化

本文关键字:日志 自动化 方法 参数 | 更新日期: 2023-09-27 18:22:11

我正在记录方法名称及其参数值,如下所示(伪代码):

class TestClass
{
    void Method(int Param1, int Param2, int Param3)
    {
       _logger->AddLogEntry("Method",Param1, Param2, Param3);
      ....
      <some work here>
      ....
    }
    void AnotherMethod(int Param)
   {
       _logger->AddLogEntry("AnotherMethod",Param);
      ....
      <some work here>
      ....
   }
  .....
}

我有点困惑,需要手动写入所有参数作为AddLogEntry方法中的输入参数。当loggable方法的签名更改时,可能会忘记一个或多个参数。有什么方法可以使这一步骤自动化吗。我的意思是取当前方法的所有参数的所有值。如果我也能取当前方法的名称并对<param name> - <value> 进行配对,那就太好了

C#方法参数重视日志自动化

您可以使用PostSharp进行日志记录操作,它由面向方面的编程模型完成。

它基于属性和反射。

更具体地说,看看他们的LogAttribue文档。

以下是他们网站上的一个简单日志示例:

[assembly:  
Log(AttributeTargetTypes="Contoso.Crm.Orders.*", 
    AttributeTargetMemberAttributes = MulticastAttributes.Public)]  
public class OrderFulfillmentService  
{ 
    public bool IsValid( Order order )  
    { 
        if ( order.Lines.Count == 0 ) 
          return false; 
        if ( order.Amount < 0 ) 
          return false; 
        return true; 
    } 
}