C# 这种C字符串格式的性质是什么?

C# 这种C字符串格式的性质是什么?,c#,string-formatting,C#,String Formatting,以下内容摘自 这种类型的字符串格式是什么?换句话说,它叫什么?它在哪里被记录?它是.NET还是需要第三方库?它是ASP.NET核心日志记录,或者更一般地说,是通过Microsoft.Extensions.logging.Abstractions进行日志记录 尽管它看起来有点像C插值字符串文字,但消息实际上是由日志基础结构格式化的。这根绳子是一根绳子。消息模板中指定的名称完全独立于后面提供的表达式,但占位符的顺序应为提供的值的顺序 这允许日志记录提供提取键/值对以执行结构日志记录。。。因此,例如,

以下内容摘自


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

它是ASP.NET核心日志记录,或者更一般地说,是通过Microsoft.Extensions.logging.Abstractions进行日志记录

尽管它看起来有点像C插值字符串文字,但消息实际上是由日志基础结构格式化的。这根绳子是一根绳子。消息模板中指定的名称完全独立于后面提供的表达式,但占位符的顺序应为提供的值的顺序

这允许日志记录提供提取键/值对以执行结构日志记录。。。因此,例如,您可以在JSON中创建一个日志条目,如下所示:

{ 消息:队列后台任务1234-5678[…]正在运行。100/3, 特性:{ Guid:1234-5678[…], 延迟循环:100 } }
它取决于日志提供程序。

它是ASP.NET核心日志记录,或者更一般地说,是通过Microsoft.Extensions.logging.Abstractions进行的日志记录

尽管它看起来有点像C插值字符串文字,但消息实际上是由日志基础结构格式化的。这根绳子是一根绳子。消息模板中指定的名称完全独立于后面提供的表达式,但占位符的顺序应为提供的值的顺序

这允许日志记录提供提取键/值对以执行结构日志记录。。。因此,例如,您可以在JSON中创建一个日志条目,如下所示:

{ 消息:队列后台任务1234-5678[…]正在运行。100/3, 特性:{ Guid:1234-5678[…], 延迟循环:100 } }
这取决于日志提供程序。

我相信这是这个特殊库的内置字符串格式。
看起来像是C插值的字符串,但不是C插值的。库本身附加字符串和参数。

我相信这是这个特殊库的内置字符串格式。
看起来像是C插值的字符串,但不是C插值的。库本身附加字符串和参数。

它被称为插值,@Charleh:不,不是。请注意,缺少$符号。我假设特殊格式将在LogInformation方法中解释。这与正常的字符串格式无关。它是string.Format的自定义实现,但可以与记录器一起使用。字符串插值与$符号一起使用,并将变量值转换为字符串。它来自微软,但有logger@imsmn:这确实是唯一可能的解释,但使用的{name}和传递的值之间似乎缺乏联系。我想我们需要看看LogInformation方法来排除使用了一些任意的魔法值,但它们是奇怪的特定任意魔法值。这叫做插值,@Charleh:不,不是。请注意,缺少$符号。我假设特殊格式将在LogInformation方法中解释。这与正常的字符串格式无关。它是string.Format的自定义实现,但可以与记录器一起使用。字符串插值与$符号一起使用,并将变量值转换为字符串。它来自微软,但有logger@imsmn:这确实是唯一可能的解释,但使用的{name}和传递的值之间似乎缺乏联系。我想我们需要查看LogInformation方法来排除使用了一些任意的魔法值,但它们是奇怪的特定任意魔法值。我要说的是,参数必须与它们在{…}模板中出现的顺序相同,因此队列后台任务{Guid}正在运行。{DelayLoop}/3,DelayLoop,guid不起作用correctly@xanatos:很好的计划,我会提到这一点。我要说的是,参数必须与它们在{…}模板中出现的顺序相同,因此队列后台任务{Guid}正在运行。{DelayLoop}/3,DelayLoop,guid不起作用correctly@xanatos:好计划,我会提到的。
_logger.LogInformation("Queued Background Task {Guid} is running. " +
                    "{DelayLoop}/3", guid, delayLoop);