.net - 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)
);
解决方案
推荐阅读
- javascript - 无法读取未定义的属性“emailAddressValidation”
- python - 如何结合 .shift() 在数据框中查询
- java - 阿帕奇弗林克。流式作业无法继续处理消息,因为某些作业线程无法从最新成功的检查点恢复状态
- logging - ADF v2 监视器选项卡活动日志数据 - 写入表
- angular - 在服务器中部署并从父项目重定向后加载角度项目时出现空白屏幕?
- groovy - 如何在 jenkinsfile 中循环运行 AWS CLI 命令
- angular - 以角度动态设置货币管道
- go - GONOSUMDB 不工作,因为我仍然得到校验和不匹配
- amazon-web-services - 具有认知的 Sagemaker 劳动力
- javascript - 在 react-excel-workbook 工作表中插入图像