首页 > 解决方案 > 这种 C# 字符串格式的性质是什么?

问题描述

以下内容摘自此 Microsoft 文档

_logger.LogInformation("Queued Background Task {Guid} is running. " +
                    "{DelayLoop}/3", guid, delayLoop);

这种类型的字符串格式是什么?换句话说,它叫什么,它记录在哪里?它是 .NET 还是需要第三方库?

标签: c#string-formatting

解决方案


它是 ASP.NET Core 日志记录——或者更一般地说,通过Microsoft.Extensions.Logging.Abstractions.

虽然它看起来有点像 C# 插值字符串文字,但消息实际上是由日志记录基础结构格式化的。该字符串是一个消息模板。消息模板中指定的名称完全独立于稍后提供的表达式 - 但占位符的顺序应为提供的值的顺序。

这允许日志记录提供提取键/值对以执行结构日志记录......因此,例如,您最终可能会在 JSON 中得到这样的日志条目:

{
  "message": "Queued Background Task 1234-5678[...] is running. 100/3",
  "properties": {
    "Guid": "1234-5678[...]",
    "DelayLoop": 100
  }
}

(这取决于日志记录提供程序。)


推荐阅读