You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Microsoft ILogger的LogDebug消息添加额外元数据?

问题描述
  • 使用Microsoft.Extensions.Logging.ILogger接口,现有日志代码如下:
_logger.LogDebug("Finished: DB retrieved OutboundData settings.", new { ElapsedTime = stopwatch.Elapsed });
  • 日志字符串未包含变量为有意设计
  • 当前日志已附带4项额外键值元数据,希望通过上述单一日志方法新增第5项元数据(ElapsedTime及其对应值)
  • 最终日志库为Serilog,但仅在宿主项目中使用,禁止使用Serilog特定方法
答案

完全可行。

Microsoft.Extensions.Logging(MEL)的日志方法(如LogDebug)原生支持传递结构化数据参数:当你传入匿名类型对象时,MEL会自动解析对象的属性为键值对元数据,并与已有的上下文元数据合并。

具体逻辑:

  • 你传入的new { ElapsedTime = stopwatch.Elapsed }会被MEL底层处理,将ElapsedTime作为元数据键,stopwatch.Elapsed的实际值作为对应值,添加到日志的属性集合中
  • 这些元数据会被后续的日志提供者(包括Serilog)接收并处理,最终和原有4项元数据一起以键值对形式输出

只需确保MEL的基础配置未禁用结构化属性传递(默认是开启状态)即可,无需额外操作。

内容的提问来源于stack exchange,提问作者Pure.Krome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:27:32