桌面应用程序 azure_如何在ASP.NET Core中使用Azure应用程序见解

桌面应用程序 azure

Azure Application Insights是可扩展的应用程序性能管理(APM)服务,可用于监视性能,检测异常并实时诊断Web应用程序的性能问题。 如果使用的是.NET Core,则可以在.NET Core支持的多个平台(Windows,Linux或Mac)上使用Application Insights。

请注意,您可以将Application Insights用于以各种技术(包括.NET,JavaScript,Node.js和Java以及.NET Core)构建的应用程序。 您可以将Application Insights用于此类应用程序,无论它们是否托管在云中。 在本文中,我们将研究如何在ASP.NET Core应用程序中将数据记录到Azure Application Insights。

若要使用本文中说明的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019

您还将需要一个Azure帐户,因为我们会将日志消息推送到Azure中的Application Insights。 如果您没有Azure帐户,则可以在此处创建一个免费的Azure帐户 。 在以下各节中,我们将研究如何将Application Insights配置为ASP.NET Core中默认记录器的接收器之一。

创建一个ASP.NET Core API项目

首先,让我们在Visual Studio中创建一个ASP.NET Core项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建一个新的ASP.NET Core项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“ ASP.NET Core Web应用程序”。
  4. 点击下一步。
  5. 在“配置新项目”窗口中,指定新项目的名称和位置。
  6. 单击创建。
  7. 在“创建新的ASP.NET Core Web应用程序”窗口中,选择.NET Core作为运行时,然后从顶部的下拉列表中选择ASP.NET Core 2.2(或更高版本)。
  8. 选择“ API”作为项目模板以创建新的ASP.NET Core API应用程序。
  9. 确保未选中“启用Docker支持”和“配置HTTPS”复选框,因为我们此处将不使用这些功能。
  10. 确保将身份验证设置为“无身份验证”,因为我们也不会使用身份验证。
  11. 单击创建。

这将在Visual Studio中创建一个新的ASP.NET Core API项目。 我们将在本文的后续部分中使用该项目。

安装NuGet软件包以获取Application Insights

现在,我们已经在Visual Studio中创建了一个ASP.NET Core API项目,接下来应该做的是安装必要的NuGet包。 为此,请在“解决方案资源管理器”窗口中选择项目,然后右键单击并选择“ Manage NuGet Packages ...”。 然后从NuGet软件包管理器安装以下软件包:

  • Microsoft.ApplicationInsights.AspNetCore
  • Microsoft.Extensions.Logging.ApplicationInsights

或者,您可以通过输入以下命令从NuGet软件包管理器控制台安装这些软件包:

Install-Package Microsoft.ApplicationInsights.AspNetCore
Install-Package  Microsoft.Extensions.Logging.ApplicationInsights

在下一节中,我们将建立应用程序与Application Insights的连接。 您将需要一个Azure帐户继续进行下一步。

在AppSettings.json中配置到Application Insights的日志记录

我们将需要一个检测密钥来连接到Azure中的Application Insight并记录数据。 我们将在AppSettings.json文件中指定它。 这是AppSettings.json文件的内容如下所示:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    },
    "ApplicationInsights": {
      "InstrumentationKey": "Write your instrumentation key here"
    }
  },
  "AllowedHosts": "*"
}

在Program类中配置到Application Insights的日志记录

下一步是在Program.cs文件的Program类中配置日志记录。 以下代码段显示了如何实现此目的。

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilderForApplicationInsights(args).Build().Run();
        }
        public static IWebHostBuilder CreateWebHostBuilderForApplicationInsights(string[] args)
        {
            var webHostBuilder = WebHost.CreateDefaultBuilder(args);
            webHostBuilder.UseStartup<Startup>()
                .ConfigureLogging((hostingContext, loggingBuilder) =>
                {
                    var loggingConfiguration = hostingContext.Configuration.GetSection("Logging");
                    if (!string.IsNullOrWhiteSpace(
                        loggingConfiguration["ApplicationInsights:InstrumentationKey"]))
                    {
                        var logLevel = loggingConfiguration["LogLevel:Default"];
                        loggingBuilder.AddApplicationInsights(loggingConfiguration
                            ["ApplicationInsights:InstrumentationKey"]?.ToString() ?? "");
                        loggingBuilder.AddFilter<ApplicationInsightsLoggerProvider>
                        ("", Enum.Parse<LogLevel>(logLevel ?? "Information"));
                        loggingBuilder.AddFilter<ApplicationInsightsLoggerProvider>
                        ("Default", Enum.Parse<LogLevel>(logLevel ?? "Warning"));
                    }
                });
            return webHostBuilder;
        }
    }

在启动类中配置到Application Insights的日志记录

在ConfigureServices方法中编写以下代码,以将ApplicationInsightsTelemetry添加到请求处理管道。

var instrumentationKey = Configuration.GetValue<string>
         ("ApplicationInsights:InstrumentationKey");
services.AddApplicationInsightsTelemetry(instrumentationKey);

在.NET Core中的控制器方法中创建日志

以下代码清单显示了如何从控制器记录数据。

public class ValuesController : ControllerBase
  {
        private readonly ILogger _logger;
        public ValuesController(ILogger<ValuesController> logger)
        {
           _logger = logger;
        }
      [HttpGet]
        public ActionResult<string> Get()
        {
           _logger.LogInformation("This is a test for checking the logger"
            + DateTime.Now.ToLongTimeString());
            return "Hello World";
        }
   }

Application Insights可以监视请求率,响应时间,异常,失败率,甚至可以监视您在应用程序代码中编写的自定义指标。 此外,Application Insights在多种平台上支持多种语言的应用程序,并且可与多种日志记录框架一起使用。 在以后的文章中,我们将研究如何为Serilog使用接收器,该接收器能够将日志数据写入Application Insights。

翻译自: https://www.infoworld.com/article/3440684/how-to-use-azure-application-insights-in-aspnet-core.html

桌面应用程序 azure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值