NLog应用程序级别变量

时间:2019-02-21 16:09:58

标签: c# .net nlog

我的任务是使用WPF应用程序,并选择了NLog作为日志记录。

我注意到herehere的答案我想通过.net Desktop和更多控制来做类似的事情。

我想在应用程序启动时设置一次GUID,并且每个日志条目(在任何级别)都会自动包含该GUID,因此我可以在该GUID上进行搜索。用户登录时创建新的Guid。

更进一步,了解我是否可以以编程方式添加我制作的每个日志中包含的任何变量实际上是一个很好的知识,因此我不必将其添加到每个Log.AnyLevel ,示例输出:

DateTime | LoginID | SessionGuid | MyMessage  

要获得此输出,我只想做:

logger.Trace("MyMessage")

在启动应用程序或实例化ViewModel或用户登录时设置 LoginID和SessionGuid。

我注意到目前我可以使用

LogEventInfo

如何一次(从代码中)添加一个变量并始终包含它?

1 个答案:

答案 0 :(得分:2)

您可以设置NLog GDC变量:

GlobalDiagnosticsContext.Set("AppGuid",Guid.NewGuid().ToString());

然后在您的布局中引用它:

${gdc:item=AppGuid}

另请参阅https://github.com/NLog/NLog/wiki/Gdc-layout-renderer