Visual Studio 中的自定义 dotnet 计数器

问题描述 投票:0回答:1

在此窗格中:

VS Diagnostic Tools pane

我正在运行来自 Microsoft 的 示例应用程序。这定义了一个计数器

static Meter s_meter = new Meter("HatCo.Store");
static Counter<int> s_hatsSold = s_meter.CreateCounter<int>("hatco.store.hats_sold");

并运行一个循环来递增计数器。我希望计数器出现在“计数器”窗格中。不是吗?

(我还尝试对现有 ASP.NET 应用程序进行计数器改造,但这些计数器根本不显示,即使是 System.Runtime 计数器,甚至使用 dotnet 计数器也是如此。我担心这会更难诊断。 )

有谁知道计数器监控实际上是如何工作并连接到流程的?管道还是插座?您可以在程序中查看自己的计数器吗?

c# .net visual-studio
1个回答
0
投票

在相关的 MS 文档中,查看自定义计数器的推荐方法是使用 dotnet-counters 工具,并且在“诊断工具”面板中无法观察到自定义计数器。为了阐明该过程,我捕获了实现中的关键时刻,展示了如何使用 dotnet-counters 来显示这些指标。

1.创建一个 ASP.NET Web 应用程序项目。

2.工具>命令行>开发者Powershell。 open CLI

3.输入

dotnet tool update -g dotnet-counters
安装dotnet工具。 install 4. 将 Program.cs 的内容替换为以下代码:

using System.Diagnostics.Metrics;
 
class Program
{
   static Meter s_meter = new("HatCo.HatStore", "1.0.0");
   static Counter<int> s_hatsSold = s_meter.CreateCounter<int>("hats-sold");
 
   static void Main(string[] args)
   {
       var rand = Random.Shared;
      Console.WriteLine("Press any key to exit");
       while (!Console.KeyAvailable)
       {
           //// Simulate hat selling transactions.
          Thread.Sleep(rand.Next(100, 2500));
          s_hatsSold.Add(rand.Next(0, 1000));
       }
   }
}
  1. 运行项目。
  2. 在powershell命令行中输入:
    dotnet-counters monitor -n WebApplication2 HatCo.HatStore
    use dotnet-counters
  3. 输出图片如下: output
© www.soinside.com 2019 - 2024. All rights reserved.