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# - 打开一个 csproj 而不是整个解决方案

Python 日志记录 - 多个模块

java - Eclipse - 将所有记录器输出重定向到控制台

c# - 将用户名添加到 Serilog

windows-services - 指定 Serilog 滚动文件路径的目录

c# - 在 mvc3 c# 项目中检索 AD 信息

c# - 如何为主窗口和exe文件定义单个图标?

docker - 在docker下运行API时,Kibana中没有日志

c# - 在 Controller 外调用 return RedirectToAction ("Activity")

tomcat - log4j 与 Tomcat6