gpt4 book ai didi

c# - 为什么 IsEnabled 是 ILogger 接口(interface)的一部分?

转载 作者:行者123 更新时间:2023-12-05 01:12:15 28 4
gpt4 key购买 nike

ILogger 接口(interface)有一个必需的方法 IsEnabled .我正在努力理解界面中该方法的用途。 (重要说明:我不是想知道实现类,只是接口(interface)。)

在正常的日志记录过程中,它似乎没有被 .Net Core 调用。

这个 answer似乎表明它供开发人员在决定登录时使用。

但这没有意义。作为开发人员,我可以在实现 ILogger 接口(interface)的类中创建我需要的任何方法,以决定是否要记录。如果实现该接口(interface)的类不需要提供 IsEnabled,则强制所有实现者都提供它是没有意义的。

ILogger 接口(interface)中的IsEnabled 的作用是什么?

最佳答案

有时,计算传递的某些参数可能代价高昂。因此,调用者可以根据需要过滤掉工作:

if (logger.IsEnabled(LogLevel.Debug))
{
logger.LogDebug("The message: {value}", DoSomethingCostlyHere());
}

另一种常见模式是将更多详细信息(例如 PII 或其他敏感数据)放入生产环境中不会出现的调试消息中:

if (logger.IsEnabled(LogLevel.Debug))
{
logger.LogDebug("'{username}' logged in", username);
}
else
{
logger.LogInformation("User logged in");
}

其他日志框架也有这个:NLog , Serilog , log4net

关于c# - 为什么 IsEnabled 是 ILogger 接口(interface)的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62295039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com