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>
进行配对,那就太好了
您可以使用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;
}
}