【问题标题】:How to ensure best argument match is used with ILogging interface for Exception logging如何确保最佳参数匹配与 ILogging 接口一起用于异常日志记录
【发布时间】:2021-08-03 04:50:34
【问题描述】:

我们在我们的 ASP.NET Core Web API 中使用 Microsoft.Extensions.Logging ILogging 接口,它公开了以下两种方法:

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 调用是错误的。

所以,我的问题是,当最佳参数匹配不用于方法调用时,是否有某种编译选项或某种静态检查工具可以向我们发出警告或错误?显然,第一种方法更适合 Exception 类型的参数,但是在键入时很容易错过。

【问题讨论】:

    标签: c# .net asp.net-core logging


    【解决方案1】:

    为什么不使用相同的命名空间编写你自己的扩展方法,先是字符串,然后是异常,然后是对象数组

    【讨论】:

    • 好主意。唯一的缺点是找到所有代码引用/使用的放置它的位置。
    猜你喜欢
    • 2011-05-10
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2011-10-23
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多