Содержание
Конфигурация ведения журналов в ASP.NET Core, обычно, указывается в JSON-файлах, таких как appsettings.json
и appsettings.Development.json
.
Конфигурация ведения журналов
Посмотрим на содержимое файла appsettings.json
, которое добавляется по умолчанию при создании шаблонного приложения:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Конфигурация ведения журналов указывается в секции Logging
. Эта секция может содержать свойства (подсекции) – LogLevel
, а также свойства, соответствующие имени провайдера, например, Debug
, Console
и т. д. Рассмотрим представленную выше конфигурацию.
Так как секция Logging
не содержит имя провайдера, то это означает, что все перечисленные настройки будут по умолчанию применяться ко всем зарегистрированным провайдерам за исключением журнала событий Windows. Далее указана подсекция LogLevel
– уровень лога. Здесь мы можем указать какие уровни лога применяются к тем или иным категориям. Так, для категории Microsoft.AspNetCore
применяется уровень Warning
. Это означает, что, если в качестве категории лога будет указываться любой класс, содержащийся в пространствах имен, начинающихся с Microsoft.AspNetCore
, то сообщения в лог будут выводиться только для уровня Warning
и выше. То есть в лог попадут сообщения с уровнями Warning (3)
, Error (4)
и Critical (5)
. Параметр Default
используется для всех прочих категорий лога. Следовательно, в нашем приложении, для всех прочих категорий будут использоваться сообщения с уровнями Information (2)
, Warning (3)
, Error (4)
, Critical (5)
.
Мы можем изменить конфигурацию по своему усмотрению, указав для каждого зарегистрированного провайдера свои настройки. Например, по умолчанию, приложение ASP.NET Core не выводит информационные сообщения (по умолчанию для этого провайдера используется уровень Warning
) в журнал событий Windows, так как этот провайдер не использует настройки по умолчанию и для него необходимо явно указывать конфигурацию. Изменим файл appsettings.json
следующим образом:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" }, "EventLog": { "LogLevel": { "Default": "Information" } } }, "AllowedHosts": "*" }
Здесь мы явно указали в секции EventLog
– имя провайдера журнала событий Windows. Внутри EventLog
мы указали уровень лога – для всех категорий в лог будут выводиться сообщения уровня Information
и выше. Теперь запустим приложение и откроем журнал событий Windows.
Обратите внимание на то, что источник сообщения, по умолчанию в журнале Windows указывается как «.NET Runtime».
Аналогичным образом мы можем указывать конфигурацию и для других провайдеров конфигурации. По умолчанию, минимальный уровень лога, используемый в нашем приложении – Information
. Мы можем понизить этот уровень, указав, например, значение Trace
:
{ "Logging": { "LogLevel": { "Default": "Trace", "Microsoft.AspNetCore": "Trace" }, "EventLog": { "LogLevel": { "Default": "Information" } } }, "AllowedHosts": "*" }
Теперь все провайдеры, за исключением провайдера журнала событий Windows, будут использовать уровни сообщений лога, начиная с самого низкого – Trace
.
Итого
Конфигурация ведения журналов указывается, обычно, в файлах конфигурации appsettings.json (хотя, мы можем использовать и свои файлы конфигурации). В конфигурации мы можем указать минимальный уровень сообщений, которые будут транслироваться в лог. При этом, для провайдера логирования EventLog мы должны явно указывать конфигурацию.