【发布时间】:2021-10-18 16:07:34
【问题描述】:
我正在使用Microsoft.Extensions.Logging.ILogger。我只想在 LogLevel 设置为 Information 时记录请求对象
我知道我可以将请求对象记录为
_logger.LogInformation("{request}", request);
我使用Serilog 作为记录器。这会按预期将对象和日志请求序列化为 json 字符串。但是我不知道 Logging 框架是先检查日志级别然后序列化还是总是先序列化然后检查日志级别。因为如果 LogLevel 设置为高于 Information,我不想在每次调用时序列化对象。
有没有办法使用Microsoft.Extensions.Logging.ILogger检查LogLevel
private Microsoft.Extensions.Logging.ILogger<RoutesController> _logger = null;
public RoutesController(Microsoft.Extensions.Logging.ILogger<RoutesController> logger)
{
_logger = logger;
}
public void Route([FromBody]JObject request)
{
//how to check current LogLevel here?
if(_logger.LogLevel == "Information")
{
_logger.LogInformation(JsonConvert.Serialize(request));
}
}
【问题讨论】:
标签: asp.net-core serilog coreclr microsoft.extensions.logging