Как включить область регистрации в файл журнала с помощью NLog - PullRequest
1 голос
/ 20 февраля 2020

Я использую NLog.Extensions.Logging.

При регистрации фабрики регистратора с использованием метода AddNLog() можно включить область регистрации, используя NLogProviderOptions.IncludeScopes.

Но как заставить NLog записывать область журнала в файл?

Я не нашел ничего подобного в списке доступных макетов

1 Ответ

3 голосов
/ 20 февраля 2020

Пример:

Журнал так:

// logger is here of type Microsoft.Extensions.Logging.ILogger
using (logger.BeginScope(new[] { new KeyValuePair<string, object>("userid", request.UserId) }))
{
   logger.LogDebug("My log message");
}

Визуализация так: ${mdlc:userid}.

Например, в целевом файле:

 <target name="file" xsi:type="File"
     layout="${longdate} ${logger} ${message}${exception:format=ToString}, user: ${mdlc:userid}" 
     fileName="${basedir}/${shortdate}.log" />

Примечание: NLogProviderOptions.IncludeScopes включено по умолчанию.

NLog напрямую

Синтаксис немного неуклюже, но это потому, что абстракция Microsoft немного ограничена. См. Также эту проблему: . NET - регистрация структурированных данных без их появления в текстовом сообщении

Если вы напрямую ссылаетесь на NLog, вы также можете сделать:

using (NLog.MappedDiagnosticsLogicalContext.SetScoped("userid", request.UserId))
{
   // logger here of type NLog.Logger
   logger.Info("My log message");
}

Также это отображается с ${mdlc:userid}

Дополнительные примеры и различные области действия для NLog объяснены здесь

Документы

PS: я обновил доступных макетов , чтобы вам было проще:)

enter image description here

...