欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Exceptionless应用--自定义插件

程序员文章站 2022-07-02 20:45:29
遇到的问题/需求 1. 这里会把一些敏感的参数记录下来,我们需要屏蔽掉,如图 2. 我们希望日志里面有当前登录用户的信息,如图: 处理方法 tip:这里用的是.net非.net core 第一个问题(屏蔽敏感参数): 第二个问题(添加扩展信息) 直接看代码/注释吧 当然需要在 的 方法中调用 其他 ......

遇到的问题/需求

  1. 这里会把一些敏感的参数记录下来,我们需要屏蔽掉,如图
    Exceptionless应用--自定义插件

  2. 我们希望日志里面有当前登录用户的信息,如图:
    Exceptionless应用--自定义插件

处理方法

core

第一个问题(屏蔽敏感参数):

exceptionlessclient.default.configuration.adddataexclusions("password", "password", "token", "token");

第二个问题(添加扩展信息)

直接看代码/注释吧

    public class exceptionlessconfig
    {
        public static void configure()
        {
            //添加自定义插件
            exceptionlessclient.default.configuration.addplugin<exceptionlessuserplugin>();
            //exceptionlessclient.default.configuration.adddataexclusions("password", "password", "token", "token");
        }

        /// <summary>
        /// 日志添加用户信息
        /// </summary>
        public class exceptionlessuserplugin : ieventplugin
        {
            public void run(eventplugincontext context)
            {
                ijsonserializer serializer = context.client.configuration.resolver.getjsonserializer();
                userinfo userinfo = 获取当前登录用户信息;
                //设置用户信息
                adduser(context, userinfo, serializer);
            }

            private static void adduser(eventplugincontext context, userinfo userinfo, ijsonserializer serializer)
            {
                exceptionless.models.data.userinfo user = context.event.getuseridentity(serializer);
                if (user != null || userinfo == null)
                    return;
                //设置当前登录用户信息
                context.event.setuseridentity(new exceptionless.models.data.userinfo
                {
                    //用户id
                    identity = userinfo.userid, 
                    //用户所在公司名--用户名
                    name = $"{userinfo.companyname}-{userinfo.username}", 
                    //扩展信息
                    data = new exceptionless.models.datadictionary(new list<keyvaluepair<string, object>> {
                        new keyvaluepair<string, object>("公司id", userinfo.companyid),
                        new keyvaluepair<string, object>("公司名称", userinfo.comanyname)
                    })
                });
            }
        }
    }

当然需要在global.csapplication_start方法中调用exceptionlessconfig.configure();

其他

context.event还有很多扩展,比如添加标签、添加属性...看需求了

over