如何在 .net 标准库中使用 application insights?

How to use application insights in .net standard library?

我在网络中使用过应用程序洞察 api。它运作良好。目前,我们的控制器需要调用一个 class 库(由 nuget 包引用)。我需要在 class 库中使用 application insight。没有例外,但应用程序洞察中没有任何记录。我写的代码如下。我们的 TelemetryConfiguration 已经在控制器中初始化了。

var telemetryClient = new TelemetryClient();
var customEvent = new Microsoft.ApplicationInsights.DataContracts.EventTelemetry
{
    Name = "helloworld",
};
// customEvent.Metrics.Add({ "latency", 42});
telemetryClient.TrackEvent(customEvent);

我应该怎么做才能使应用程序洞察发挥作用?

通常,以下步骤足以登录 App Insights:

1- 在您的 WebApi 启动程序中 class 和您的库项目通过 nuget 添加 App Insights 程序集。

Microsoft.ApplicationInsights

2- 在您的初创公司中注册 App Insights class:

services.AddApplicationInsightsTelemetry(Configuration);

3- 在 appsettings.json 中设置您的检测密钥:

"ApplicationInsights": {
  "InstrumentationKey": "<Your instrumentation key here>"
}

4- 在您需要的任何 class 中,注入一个 TelemetryClient 并使用它。

using Microsoft.ApplicationInsights

namespace MyNamesPace
{
    public class MyClass
    {
        private readonly TelemetryClient _telemetryClient;

        public MyClass(TelemetryClient telemetryClient)
        {
            _telemetryClient= telemetryClient;
        }

        public myClassMethod()
        {
            // Use your _telemetryClient instance
            _telemetryClient.TrackEvent("Your Telemetry Event");
        }
    }
}

4- 在你的控制器中注入你的 class

namespace MyApiNamesPace
{
    public class MyController : ControllerBase
    {
        private readonly IMyClass _myClass;

        public MyClass(IMyClass myClass)
        {
            _myClass = myClass;
        }

        public IActionResult myAction()
        {
            _myClass.MyClassMethod();
        }
    }
}

5- 不要忘记在启动时在 DI 容器中注册 class:class:

services.AddScoped<IMyClass, MyClass>();

编程愉快!!