【发布时间】:2018-09-06 02:59:59
【问题描述】:
使用 NLog 我可以添加一个属性:
eventInfo = new LogEventInfo();
eventInfo.Properties.Add(name, value);
和一个变量:
loggerInstance = LogManager.GetLogger(typeName);
loggerInstance?.Factory.Configuration.Variables.Add(name, value);
然后我问自己:有什么区别?环顾四周,但没有找到明确的解释,只是警告说 gdc、mdc 和 mdlc 已过时。我应该将哪一个用于什么目的 - 我可能都需要(或都不需要)。
【问题讨论】:
-
您应该避免在运行时修改全局 NLog 变量。有关不同上下文属性的详细信息,另请参阅github.com/NLog/NLog/wiki/Gdc-layout-renderer。
-
为了更加透明,如果我想要一个仅与特定记录器实例关联的变量,那么我该怎么做?或者,如果我想要一个与应用程序中的所有记录器实例关联的变量,那么我该怎么做呢?我可以通过我的包装器(我有其他原因)将 LogEventInfo 的实例与特定的记录器相关联,并且可以通过关键字查询该对象以获取该记录器实例的匹配值。这似乎是我想要的本地商店,但它是否在该对象的预期目的范围内,以这种方式使用它会导致问题吗?
-
可以使用 GDC 配置所有记录器的全局属性:github.com/NLog/NLog/wiki/Gdc-layout-renderer。可悲的是,无法为单个 Logger 配置属性。另见讨论github.com/NLog/NLog/pull/2496