.net core 将app insights跟踪日志添加到.net核心控制台应用程序
我有一个.net core控制台应用程序(不是AspNetCore),我想添加app insights日志,将跟踪日志推送到app insights。我已尝试使用Microsoft.ApplicationInsights.AspNetCore,但当我使用时:.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
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包可用于控制台应用程序。