向 ILogger 添加额外属性<T>结构化日志记录

问题描述 投票:0回答:1

使用

ILogger<T>
,除了消息模板所涵盖的属性之外,还有其他方法可以添加日志属性吗?

例如:

_logger.LogInformation("Order {OrderNumber} was registered.", orderNumber);
// Appending extra information to this log entry would be neat:
// OrderOriginSystem = InStoreSupport
// Supervisor = Duncan P.
// StoreLocationCode = ca-north-12

我知道 Serilog 允许使用各种方法向日志语句附加附加属性,这些方法似乎与

ILogger<T>
配合得很好,例如:

using (LogContext.PushProperty("OrderOriginSystem ", orderOriginSystem))
using (LogContext.PushProperty("Supervisor", supervisor))
using (LogContext.PushProperty("StoreLocationCode", slc))
{
    _logger.LogInformation("Order {OrderNumber} was registered.", orderNumber);
}

但我想避免在代码中直接提交 Serilog,并希望自始至终都依赖

ILogger<T>

有什么我错过的技巧吗?

.net serilog ilogger structured-logging
1个回答
0
投票

ILogger 相当于 Serilog 的

PushProperty
BeginScope

这里有一篇关于它的很棒的文章

using (logger.BeginScope(new Dictionary<string, object>{
    ["CustomerId"] = 12345,
    ["OrderId"] = 54
}))
{
    logger.LogInformation("Processing credit card payment");
}
© www.soinside.com 2019 - 2024. All rights reserved.