c# - 向 Microsoft "ILogger"LogDebug 消息添加额外的元数据?

标签 c# logging serilog microsoft.extensions.logging

我想记录以下消息:

_logger.LogDebug("Finished: DB retrieved OutboundData settings.", new { ElapsedTime = stopwatch.Elapsed });
  • 这是使用 Microsoft.Extensions.Logging.ILogger 接口(interface)
  • 注意到字符串消息中没有变量怎么办?这是设计使然。
  • 注意到我是如何添加一些额外的元的吗?这将被添加到日志消息的键/值内容中。

例如

enter image description here

看看这条消息如何有 4x 额外的键/值元数据?棒极了。我希望向这个单一的日志记录方法添加第五个(“ElapsedTime”/实际值)。

这可能吗?

旁注:

  • 我使用 Serilog 作为最终的日志库
  • 除了宿主项目之外,Serilog 不是我的任何项目。因此,请不要建议任何 Serilog 特定方法。那是行不通的。

最佳答案

您需要创建一个scope将所有元数据添加到。例如:

using var scope = _logger.BeginScope(new Dictionary<string, object>() { ["ElapsedTime"] = stopwatch.Elapsed });
_logger.LogDebug("Finished: DB retrieved OutboundData settings.");

关于c# - 向 Microsoft "ILogger"LogDebug 消息添加额外的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77184337/

相关文章:

c# - 使用属性丰富 Seq 日志语句,而无需将它们包含在消息行中(使用 Serilog)

c# - Serilog 不会生成有效的 json(结构化日志记录)

c# - List 方法获取另一个列表与重复项的差异(listobject.Expect 方法不起作用)

c# - 从 asp :CheckBoxList with Datasource 计算多个值的总和

java - 在我们的类(class)中使用log4j时如何纠正 "java.lang.NoClassDefFoundError"?

logging - 如何将 kubernetes 中所有 pod 的日志存储在 Node 上的一处?

c# - 如何将 Autofac 与 Serilog 包装类一起使用

c# - 将 Task<TResult> 中的 TResult 转换为 System.Object

c# - 具有自定义属性的字典的 Newtonsoft Json 序列化

javascript - log4javascript 中的日志对象