Разница между словарем свойств и словарем переменных в NLog - PullRequest
0 голосов
/ 05 сентября 2018

С NLog я могу добавить свойство с:

eventInfo = new LogEventInfo();
eventInfo.Properties.Add(name, value);

и переменная с:

loggerInstance = LogManager.GetLogger(typeName);
loggerInstance?.Factory.Configuration.Variables.Add(name, value);

и тогда я спрашиваю себя: в чем разница? Посмотрел вокруг, но не нашел четкого объяснения, только предупреждения о том, что gdc, mdc и mdlc устарели. Какой из них мне следует использовать для каких целей - мне могут понадобиться оба (или ни один).

1 Ответ

0 голосов
/ 05 сентября 2018

в чем разница

  • eventInfo.Properties: контекст в области видимости одного logEvent. Вы можете сделать их с помощью ${event-properties:myPropName}
  • Configuration.Variables: переменные, используемые в вашем nlog.config с <variable />. Вы можете использовать их в конфигурации как:
    • ${var:myVar} - динамический, но только для свойств с типом Layout
    • ${myVar} - для всех свойств будет применяться при разборе nlog.config

gdc, mdc и mdlc устарели

Классы GDC, MDC и MDLC устарели, но не GlobalDiagnosticsContext MappedDiagnosticsContext и MappedDiagnosticsLogicalContext.

Это потокобезопасные контексты для:

  • GlobalDiagnosticsContext: полное применение. Рендеринг с ${gdc:myKey}
  • MappedDiagnosticsContext: текущий поток, но созданные этим потоком. Рендеринг с ${mdc:myKey}
  • MappedDiagnosticsLogicalContext: текущий поток, включая потоки, созданные этим потоком. Рендеринг с ${mdlc:myKey}.

Для получения дополнительной информации см. https://nlog -project.org / config /? Tab = layout-renderers & search = context

...