NLog 应用程序级变量

NLog application level variables

我的任务是开发一个 WPF 应用程序并且选择了 NLog 来进行日志记录。

我记下答案 and here我想做一些类似的事情,但使用 .net Desktop 并有更多控制。

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

更进一步,知道我是否可以通过编程方式添加 any 变量,这些变量包含在我制作的每个日志中,所以我不必将它们添加到每个日志中和每个 Log.AnyLevel,一个示例输出:

DateTime | LoginID | SessionGuid | MyMessage  

要获得此输出,我只喜欢这样做:

logger.Trace("MyMessage")

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

我注意到目前我可以每个日志

LogEventInfo

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

您可以设置一个 NLog GDC 变量:

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

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

${gdc:item=AppGuid}

另见 https://github.com/NLog/NLog/wiki/Gdc-layout-renderer