azure - 如何在 Application Insights 中区分来自不同实例 .net core 应用程序的跟踪

标签 azure logging .net-core azure-application-insights

我正在开发使用 Microsoft.Extensions.Logging 的 .NET Core 2.2 控制台应用程序,并配置为使用 Microsoft.ApplicationInsights.Extensibility 将日志发送到 Azure Application Insights:

   services.AddSingleton(x =>
                new TelemetryClient(
                    new TelemetryConfiguration
                    {
                        InstrumentationKey = "xxxx"
                    }));  
...                 
   var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
   loggerFactory.AddApplicationInsights(serviceProvider, logLevel);

工作正常:我可以在 Application Insights 中读取日志。但应用程序可以在少数实例中同时启动(在不同的 Docker 容器中)。如何区分来自不同实例的痕迹?我可以使用源文件名,但我不知道应该如何注入(inject)它。

我尝试使用范围:

var logger = loggerFactory.CreateLogger<Worker>();                
logger.BeginScope(dto.FileName);
logger.LogInformation($"Start logging.");

有趣的是,我的配置几乎与示例中的相同:https://github.com/MicrosoftDocs/azure-docs/issues/12673

但就我而言,我在 Application Insights 中看不到属性“FileName”。

最佳答案

对于控制台项目,如果要使用自定义 ITelemetryInitializer,应使用以下格式:.TelemetryInitializers.Add(new CustomInitializer());

官方文档是here .

我在身边测试了一下,效果很好。可以设置角色名称。

示例代码如下:

        static void Main(string[] args)
        {
            TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
            configuration.InstrumentationKey = "xxxxx";
            configuration.TelemetryInitializers.Add(new CustomInitializer());

            var client = new TelemetryClient(configuration);

            ServiceCollection services = new ServiceCollection();
            services.AddSingleton(x => client);
            var provider = services.BuildServiceProvider();

            var loggerFactory = new LoggerFactory();

            loggerFactory.AddApplicationInsights(provider, LogLevel.Information);

            var logger = loggerFactory.CreateLogger<Program>();
            logger.LogInformation("a test message 111...");



            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }

检查Azure门户中的角色名称:

enter image description here

关于azure - 如何在 Application Insights 中区分来自不同实例 .net core 应用程序的跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866258/

相关文章:

azure - Azure 如何维护 APPLICATION 状态?

c# - MassTransit 未订阅 AzureServiceBus 主题

azure - 如何使用 ADAL for Angular 将用户信息传递回服务器端

cordova - Azure Active Directory/.auth/refresh 发出的刷新请求失败,因为在 token 存储中找不到刷新 token

linux - Logger 命令在 CentOS 中不起作用?

java - log4j 属性文件 : how to configure?

c# - 使用 EF Core 3.1 在 SQL Server 上生成不可为空的行版本

c# - 如何在 .net 核心 API 中通过 API key 或用户凭据处理身份验证?

git - 了解 git 日志图输出

asp.net-web-api - 如何从 dotnet core webapi 下载 Zip 文件?