NLog中的“属性”字典和“变量”字典之间的区别

时间:2018-09-04 22:13:40

标签: c# nlog

使用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 :(得分:0)

  

有什么区别

  • eventInfo.Properties:关于一个logEvent范围的上下文。您可以使用${event-properties:myPropName}
  • 进行渲染
  • Configuration.Variables:在nlog.config中使用<variable />使用的变量。您可以在配置中使用它们,如下所示:
    • ${var:myVar}-动态的,但仅适用于Layout类型的属性
    • ${myVar}-对于所有属性,将在解析nlog.config时应用
  

gdc,mdc和mdlc已过时

GDC,MDC和MDLC类已过时,但不是 GlobalDiagnosticsContext MappedDiagnosticsContextMappedDiagnosticsLogicalContext

这些是以下对象的线程安全上下文:

  • GlobalDiagnosticsContext:完整的申请。使用${gdc:myKey}
  • 渲染
  • MappedDiagnosticsContext:当前线程,但是由该线程创建的线程。使用${mdc:myKey}
  • 渲染
  • MappedDiagnosticsLogicalContext:当前线程,包括由此线程创建的线程。使用${mdlc:myKey}渲染。

有关更多信息,请参见https://nlog-project.org/config/?tab=layout-renderers&search=context