.net core 将app insights跟踪日志添加到.net核心控制台应用程序

.net core 将app insights跟踪日志添加到.net核心控制台应用程序,.net-core,azure-application-insights,.net Core,Azure Application Insights,我有一个.net core控制台应用程序(不是AspNetCore),我想添加app insights日志,将跟踪日志推送到app insights。我已尝试使用Microsoft.ApplicationInsights.AspNetCore,但当我使用时: factory.AddApplicationInsights(serviceProvider); 它抛出一个错误,表示找不到托管环境 尝试激活“Microsoft.ApplicationInsights.AspNetCore.Telem

我有一个.net core控制台应用程序(不是AspNetCore),我想添加app insights日志,将跟踪日志推送到app insights。我已尝试使用Microsoft.ApplicationInsights.AspNetCore,但当我使用时:

 factory.AddApplicationInsights(serviceProvider);
它抛出一个错误,表示找不到托管环境

尝试激活“Microsoft.ApplicationInsights.AspNetCore.TelemetryInitializers.AspNetCoreEnvironment TelemetryInitializer”时,无法解析类型“Microsoft.AspNetCore.Hosting.IHostingEnvironment”的服务

大概是因为这不是一个AspNetCore应用程序,只是一个纯粹的控制台应用程序


是否有一种方法可以将跟踪日志从.net core console应用程序中推送到App Insights中?

使用Microsoft.ApplicationInsights,如中所述。

实际上,我遇到了同样的问题,并最终通过查看AddApplicationInsights源代码解决了这个问题。诀窍在于,您必须手动将TelemetryClient注册到容器中,以使这些内容适用于控制台应用程序:

  var telemetryClient = new TelemetryClient(new TelemetryConfiguration()
        {
            InstrumentationKey = config.GetValue("ApplicationInsights:InstrumentationKey")
        });

        services.AddSingleton(x => telemetryClient);

        var provider = services.BuildServiceProvider();

        loggerFactory.AddApplicationInsights(provider, LogLevel.Information);
        var logger = loggerFactory.CreateLogger<Program>();

        logger.LogInformation("Test");
var telemetryClient=新遥测客户端(新遥测配置()
{
InstrumentationKey=config.GetValue(“ApplicationInsights:InstrumentationKey”)
});
AddSingleton(x=>telemetryClient);
var provider=services.BuildServiceProvider();
loggerFactory.AddApplicationInsights(提供程序,LogLevel.Information);
var logger=loggerFactory.CreateLogger();
logger.登录信息(“测试”);

使用Microsoft.ApplicationInsights,如中所述。谢谢,看起来我必须创建一个自定义记录器,然后在该记录器中调用底层的App Insights API。如果有必要,我可以这样做,但我想已经有了。有一个新的Microsoft.Extensions.Logging.ApplicationInsights包可用于控制台应用程序。