【发布时间】:2022-04-30 17:34:55
【问题描述】:
我理解这个警告的概念(类似于this question),但是这段代码有什么问题?
private async Task LogWarningAsync(short? userCodeId, string message, params object[] args)
{
_logger.LogWarning(message, args);
// Do something on the database...
}
警告:
CA2254
日志消息模板不应因调用“LoggerExtensions.LogWarning(ILogger, string?, params object?[])”而异
【问题讨论】:
-
我猜只是因为
message是一个变量。为什么要调用运行_logger.LogWarning的方法?为什么不能将_logger.LogWarning直接与编译时日志模板一起使用?另外,您的方法LogWarningAsync也进行数据库调用? -
@gunr2171 可能
LogWarningAsync()命名不当,但情况是在此类中,一些敏感的日志消息必须同时进入日志文件和系统日志数据库表(很少见)。在撰写本文时,在此警告之前,出于减少代码重复和不想意外忘记日志的明显原因,将两者结合在一起。 -
假设我将其拆分为两个调用:
_logger.LogWarning('My sample message'); await LogWarningAsync('My sample message');每次调用此方法时,我都将不得不复制输入消息和参数,我不太愿意这样做。跨度>
标签: c#