Полное имя типа, за которым следует индекс, что это значит? - PullRequest
1 голос
/ 02 июня 2019

Я пытаюсь понять вывод журнала dotnet run для проекта ASP.NET Core. Во многих местах отображается полное имя типа, за которым следует синтаксический индексатор.

Эта страница объясняет, как представлены типы массивов, но в этом случае индекса нет.

Console.WriteLine(new string[100]); показывает:
System.String[]

Это фактический dotnet run вывод:
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]

Как интерпретировать предыдущий текст? Что такое 58?

Это общее представление строки C #? Какая конструкция кода выдаст что-то подобное?

1 Ответ

1 голос
/ 02 июня 2019

В приведенном примере есть три компонента:

  1. info, то есть уровень журнала .
  2. Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager, то есть категория журнала .
  3. 58, то есть идентификатор события журнала .

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}]");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...