ILogger - 冗余日志级别的资源利用率

时间:2021-07-18 09:27:38

标签: .net logging serilog

我向/从 Web 服务发送和接收巨大的 JSON 有效负载。我在调试级别以易于阅读的格式 (Prettifier) 记录 JSON 内容,并在信息级别记录响应代码。

_logger.LogInformation($"statusCode={responseMessage.StatusCode}");
_logger.LogDebug(MyJsonPrettifier(await responseMessage.Content.ReadAsStringAsync));

这在开发过程中非常有用 - 我可以快速检查正在发生的事情。但是,由于这些函数的结构方式 - 简单的字符串参数 - 即使我将日志级别设置为不同,它也会始终执行 - 发布发布版本时发出警告。

我阅读了this article,其中显示了差异 - 没有日志的应用程序执行速度 40 倍。问题真的很严重。我在 .NET5 中开发,我也使用 Serilog。是否有一种简单、通用、或许已经建立的方法来解决这个问题?

我可以使用将回调作为参数的记录器轻松改善问题。因此,如果设置了适当的日志级别,它只会执行回调。

_logger.LogInformation(
   () => $"statusCode={responseMessage.StatusCode}");

_logger.LogDebug(
   () => MyJsonPrettifier(await responseMessage.Content.ReadAsStringAsync)
);

0 个答案:

没有答案