NLog整合ExceptionLess如何映射当前用户身份
在将NLog与Exceptionless集成时,要映射当前用户的身份,我们可以使用NLog的布局渲染器(Layout Renderer)和Exceptionless的上下文数据(Context Data)。
首先,在NLog的配置文件中,我们需要定义一个自定义的布局渲染器来获取当前用户的身份信息。例如,我们可以创建一个名为"currentuser"的布局渲染器。在该布局渲染器的实现中,我们可以访问当前用户的身份信息,并返回相应的值。
接下来,配置Exceptionless的客户端,将当前用户的身份信息添加到Exceptionless的上下文数据中。可以使用ExceptionlessClient.Default
获取客户端实例,并使用SetUserDescription
方法设置用户的身份信息。在这个例子中,我们将使用NLog布局渲染器中获取的当前用户身份信息。
下面是一个示例配置文件和代码:
NLog配置文件:
定义自定义布局渲染器:
设置Exceptionless的用户身份信息:
在上述示例中,我们将自定义布局渲染器命名为"currentuser",并在NLog的布局中使用${currentuser}
来引用它。我们在自定义布局渲染器的Append
方法中获取当前用户的身份信息并将其写入日志内容中。
然后,我们使用NLog的GetCurrentClassLogger()
方法获取当前类的日志记录器,并通过${currentuser}
来获取当前用户的身份信息。最后,使用Exceptionless的SetUserDescription
方法将用户身份信息设置到Exceptionless的上下文数据中。
这样,当NLog记录日志时,Exceptionless将自动收集日志,包括当前用户的身份信息。
通过以上设置后,我们登录ExceptionlessUI发现,用户信息有些还是为空:
除了上面通过代码设置的用户信息可以显示外,其它正常NLog输入用户信息都没有,此时我可以修改一下NLog配置文件:
布局中增加顶级的属性: userIdentity="${aspnet-user-identity}",就可以自动映射MVC或者WebAPI里面的Session信息或者用户登录账号了:
会话事件也可以自动聚合了:
2023.1.8更新
默认情况下,EXceptionless UI里面的用户会自动读取 HttpContext.User?.Identity.Name属性值,因此我们在登录构造凭证Claims的时候,记得赋值2个通用属性即可:
new Claim(ClaimTypes.Name,userData.DispName), new Claim(ClaimTypes.NameIdentifier,userData.LoginAccount)
__EOF__

本文链接:https://www.cnblogs.com/pccai/p/17865192.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2010-11-29 如何使用Oracle VM VirtualBox作SharePoint2010开发?