全类型名称后跟索引,这是什么意思?

时间:2019-06-02 14:54:34

标签: c# asp.net-core types

我正在尝试了解ASP.NET Core项目的dotnet run的日志记录输出。在很多地方显示完整的类型名称,后跟索引器语法。

page说明了数组类型的表示方式,但在这种情况下没有索引。

Console.WriteLine(new string[100]);显示:
System.String[]

这是实际的dotnet run输出:
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]

如何解释先前的文字?什么是58?

它是通用的C#字符串表示形式吗?哪种代码构造会输出类似的内容?

1 个答案:

答案 0 :(得分:1)

在提供的示例中,包含三个组件:

  1. info,即log level
  2. Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager,即log category
  3. 58,即log event ID

ASP.NET Core使用ILoggerILogger<T>进行记录,并使用以下调用:

logger.LogInformation(...);

您显示的示例日志消息来自控制台提供程序,该控制台提供了有关如何设置消息格式的规则。默认情况下,这从标题行level: category[eventID]开始,如图所示。

作为一个粗略的示例,您可能会想象以下代码用于生成最终消息:

var logLevel = "info";
var logCategory = "Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager";
var logEventId = 58;

Console.Writeline($"{logLevel}: {logCategory}[{logEventId}]");