C# 如何确保最佳参数匹配与iLogg接口一起用于异常日志记录
我们在ASP.NET核心Web API中使用Microsoft.Extensions.Logging iLogg接口,该接口公开了以下两种方法:C# 如何确保最佳参数匹配与iLogg接口一起用于异常日志记录,c#,.net,asp.net-core,logging,C#,.net,Asp.net Core,Logging,我们在ASP.NET核心Web API中使用Microsoft.Extensions.Logging iLogg接口,该接口公开了以下两种方法: LogError(ILogger, Exception, String, Object[]) LogError(ILogger, String, Object[]) 在我们的代码中处理异常时,我们尽最大努力记录它们,上面的接口将允许下面的两个方法调用进行良好编译: Logger.LogError(e, "Error message...&q
LogError(ILogger, Exception, String, Object[])
LogError(ILogger, String, Object[])
在我们的代码中处理异常时,我们尽最大努力记录它们,上面的接口将允许下面的两个方法调用进行良好编译:
Logger.LogError(e, "Error message...")
Logger.LogError("Error message...", e) // bad call, will not log full exception info!
但是,只有第一种方法可以正确记录异常,包括堆栈跟踪信息。检查我们的代码库发现,许多异常的LogError
调用都是错误的
所以,我的问题是,当方法调用未使用最佳参数匹配时,是否存在某种编译选项或静态检查工具来向我们提供警告或错误?显然,第一个方法更适合匹配异常类型参数,但是在键入时,您很容易忽略这一点。为什么不使用与字符串、异常和对象数组相同的名称空间编写自己的扩展方法呢为什么不使用与字符串、异常和对象数组相同的名称空间编写自己的扩展方法呢好主意。唯一的缺点是找到所有代码都引用/使用的放置位置。好主意。唯一的缺点是找到所有代码都引用/使用的放置位置。