使用
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>
。
有什么我错过的技巧吗?
ILogger 相当于 Serilog 的
PushProperty
是 BeginScope
。
这里有一篇关于它的很棒的文章
using (logger.BeginScope(new Dictionary<string, object>{
["CustomerId"] = 12345,
["OrderId"] = 54
}))
{
logger.LogInformation("Processing credit card payment");
}