我正在尝试了解ASP.NET Core项目的dotnet run
的日志记录输出。在很多地方显示完整的类型名称,后跟索引器语法。
此page说明了数组类型的表示方式,但在这种情况下没有索引。
Console.WriteLine(new string[100]);
显示:
System.String[]
这是实际的dotnet run
输出:
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]
如何解释先前的文字?什么是58?
它是通用的C#字符串表示形式吗?哪种代码构造会输出类似的内容?
答案 0 :(得分:1)
在提供的示例中,包含三个组件:
info
,即log level。Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager
,即log category。58
,即log event ID。 ASP.NET Core使用ILogger
和ILogger<T>
进行记录,并使用以下调用:
logger.LogInformation(...);
您显示的示例日志消息来自控制台提供程序,该控制台提供了有关如何设置消息格式的规则。默认情况下,这从标题行level: category[eventID]
开始,如图所示。
作为一个粗略的示例,您可能会想象以下代码用于生成最终消息:
var logLevel = "info";
var logCategory = "Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager";
var logEventId = 58;
Console.Writeline($"{logLevel}: {logCategory}[{logEventId}]");