首页 > 解决方案 > ILogger - 冗余日志级别的资源利用率

问题描述

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

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

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

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

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

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

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

标签: .netloggingserilog

解决方案


推荐阅读