首页 > 其他分享 >NLog整合ExceptionLess如何映射当前用户身份

NLog整合ExceptionLess如何映射当前用户身份

时间:2023-11-29 16:36:21浏览次数:47  
标签:ExceptionLess 渲染器 映射 Exceptionless 用户 信息 NLog 身份

在将NLog与Exceptionless集成时,要映射当前用户的身份,我们可以使用NLog的布局渲染器(Layout Renderer)和Exceptionless的上下文数据(Context Data)。

首先,在NLog的配置文件中,我们需要定义一个自定义的布局渲染器来获取当前用户的身份信息。例如,我们可以创建一个名为"currentuser"的布局渲染器。在该布局渲染器的实现中,我们可以访问当前用户的身份信息,并返回相应的值。

接下来,配置Exceptionless的客户端,将当前用户的身份信息添加到Exceptionless的上下文数据中。可以使用ExceptionlessClient.Default获取客户端实例,并使用SetUserDescription方法设置用户的身份信息。在这个例子中,我们将使用NLog布局渲染器中获取的当前用户身份信息。

下面是一个示例配置文件和代码:

NLog配置文件:

<target xsi:type="Exceptionless" name="exceptionlessTarget" serverUrl="https://your-exceptionless-url.com" apiKey="YOUR_API_KEY" />

<layout xsi:type="JsonLayout">
  <attribute name="time" layout="${date}" />
  <attribute name="level" layout="${level:upperCase=true}" />
  <attribute name="message" layout="${message}" />
  <attribute name="currentuser" layout="${currentuser}" />
</layout>

<rules>
  <logger name="*" minlevel="Trace" writeTo="exceptionlessTarget" />
</rules>

定义自定义布局渲染器:

[LayoutRenderer("currentuser")]
public class CurrentUserLayoutRenderer : LayoutRenderer
{
    protected override void Append(StringBuilder builder, LogEventInfo logEvent)
    {
        // 获取当前用户身份信息的逻辑
        // 将身份信息写入 builder 中
    }
}

设置Exceptionless的用户身份信息:

var client = ExceptionlessClient.Default;
client.SetUserDescription(NLog.LogManager.GetLogger("Example").Factory.GetCurrentClassLogger().Info("${currentuser}").ToString());

在上述示例中,我们将自定义布局渲染器命名为"currentuser",并在NLog的布局中使用${currentuser}来引用它。我们在自定义布局渲染器的Append方法中获取当前用户的身份信息并将其写入日志内容中。

然后,我们使用NLog的GetCurrentClassLogger()方法获取当前类的日志记录器,并通过${currentuser}来获取当前用户的身份信息。最后,使用Exceptionless的SetUserDescription方法将用户身份信息设置到Exceptionless的上下文数据中。

这样,当NLog记录日志时,Exceptionless将自动收集日志,包括当前用户的身份信息。

通过以上设置后,我们登录ExceptionlessUI发现,用户信息有些还是为空:

image

除了上面通过代码设置的用户信息可以显示外,其它正常NLog输入用户信息都没有,此时我可以修改一下NLog配置文件:

<target xsi:type="Exceptionless" name="exceptionlessTarget" serverUrl="https://your-exceptionless-url.com" apiKey="YOUR_API_KEY" userIdentity="${aspnet-user-identity}" />

布局中增加顶级的属性: userIdentity="${aspnet-user-identity}",就可以自动映射MVC或者WebAPI里面的Session信息或者用户登录账号了:

image

会话事件也可以自动聚合了:

image

标签:ExceptionLess,渲染器,映射,Exceptionless,用户,信息,NLog,身份
From: https://www.cnblogs.com/pccai/p/17865192.html

相关文章

  • 无涯教程-F# - 映射(Maps)
    在F#中,字典(Maps)是一种特殊的集合,将值(value)与键(key)相关联。创建字典通过使用Map.empty创建空Map并使用添加功能添加项目来创建Map。以下示例演示了这一点-(*CreateanemptyMap*)letstudents=Map.empty.(*CreatinganemptyMap*)Add("ZaraAli","1......
  • DockerCompose修改某个服务的配置(添加或编辑端口号映射后如何重启单个服务使其生效)
    场景docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端分离版为例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/128372122上面讲了dockercompose的应用示例,如果需要修改某个服务的配置文件,比如需要给其中一个java服务添加一......
  • O(nlogn)排序算法
    排序算法介绍常见时间复杂度为\(O(nlogn)\)的排序算法1.快速排序分治思想#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;inta[N];voidquick_sort(intl,intr){if(l>=r)return;intx=a[l+r>>1],i=l-1,j=r+1;......
  • 时间复杂度为 O(nlogn) 的排序算法 | 京东物流技术团队
    归并排序归并排序遵循分治的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解,归并排序的步骤如下:划分:分解待排序的n个元素的序列成各具n/2个元素的两个子序列,将长数组的排序问题转换为短数组的排序问题,当待排......
  • 共享内存的创建和映射过程
    消息队列、共享内存、信号量的机制:它们在使用之前都要生成key,然后通过key得到唯一的id,并且都是通过xxxget函数。在内核里面,这三种进程间通信机制是使用统一的机制管理起来的,都叫ipcxxx。为了维护这三种进程间通信进制,在内核里面,我们声明了一个有三项的数组。通过这段代码,来......
  • PHP将数据表里的两个字段映射成对象的键和值
    $playersArray=DB::table('sign_up') ->select('user_id','nickname') ->where('order_id','=',$request->id) ->where('nickname','<>','') ->get() -&g......
  • .NET领域性能最好的对象映射框架Mapster使用方法
     Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。在本文中,我将详细介绍如何在.NET中使用Mapster,并提供一些实例和源代码。和其它框架性能对比: Mapster的安装和配置:首先,打开VisualStudio并创建一个新的.NET项目。在NuGet包管......
  • 基于Boost.Asio实现端口映射器
    Boost.Asio是一个功能强大的C++库,用于异步编程和网络编程,它提供了跨平台的异步I/O操作。在这篇文章中,我们将深入分析一个使用Boost.Asio实现的简单端口映射服务器,该服务器能够将本地端口的数据包转发到指定的远程服务器上。端口映射通常用于将一个网络端口上的流量转发到......
  • 在.net中使用AutoMapper进行对象映射,对象相互转,简单方便
    AutoMapper是一种对象映射工具,它可以帮助我们将不同类型的数据对象之间进行相互转换。在.NET中,我们可以使用AutoMapper库来简化数据对象之间的映射操作,从而提高代码的可读性和可维护性。一、AutoMapper的安装和基本使用安装AutoMapper首先,我们需要在项目中安装AutoMapper库。......
  • Windows重映射交换Esc与Cap键功能与恢复
    参考链接:https://blog.csdn.net/qq_35333978/article/details/113702970重映射.regWindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\KeyboardLayout]"ScancodeMap"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a......