首页 > 解决方案 > 如何从 AI 日志中排除参数?

问题描述

我想从 Application Insights 中的跟踪和依赖项日志中排除一些参数(例如城市、用户 ID、应用程序角色...)。

你有什么建议吗?

标签: azureparametersazure-application-insights

解决方案


您可以使用ITelemetryInitializer将 userId / app 角色的值更改为空。然后在 AI 日志中,city、userId、app 角色会被自动移除。

我使用.net 核心网络应用程序对其进行测试:

1.在 web 项目中添加一个MyTelemetryInitializer类:

    public class MyTelemetryInitializer: ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            //only apply for Trace and Dependency
            if (telemetry is TraceTelemetry || telemetry is DependencyTelemetry)
            {
                telemetry.Context.User.Id = "";
                telemetry.Context.Cloud.RoleInstance = "";
                telemetry.Context.Cloud.RoleName = "";
            }
        }    
    }

2.在 Startup.cs -> ConfigureServices 方法中,注册自定义遥测初始化器:

        public void ConfigureServices(IServiceCollection services)
        {
            //other code

            services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

3.在 HomeController.cs 中,创建 TelemetryClient 来发送遥测数据:

    public class HomeController : Controller
    {

        TelemetryClient client = new TelemetryClient();
        public IActionResult Index()
        {
            client.TrackTrace("0624-2 index: this is a trace message!!!");
            return View();
        }

        public IActionResult About()
        {
            client.TrackTrace("0624-2 about: this is a trace message!!!");

            ViewData["Message"] = "Your application description page.";

            return View();
        }

        public IActionResult Contact()
        {
            client.TrackTrace("0624-2 contact: this is a trace message!!!");
            ViewData["Message"] = "Your contact page.";

            return View();
        }
   }

4.运行项目后,等待几分钟,然后导航到 azure 门户 -> 你的应用洞察 -> 搜索页面,检查跟踪消息的属性:

在此处输入图像描述


推荐阅读