Application Insights 中所有请求的 resultCode 为 0
resultCode is 0 for all requests in Application Insights
我有一个与 Application Insights 实例连接的函数应用程序。
当我查看有关应用程序洞察力的请求时,无论是否成功,所有条目的 resultCode 均为 0。我怎样才能正确显示 resultCode?
如果我没记错的话,我的函数应用程序 运行 版本为“3.0.14916.0”。
这是我的启动:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddLogging(loggingBuilder =>
{
var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
loggingBuilder.AddApplicationInsights(key);
});
builder.Services.AddSingleton(sp =>
{
var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
return new TelemetryConfiguration(key);
});
(...)
}
}
编辑 1:
在评论中有人问我为什么要在 Startup 中添加日志记录。我这样做是因为,据我所知,如果我在 Startup 中添加日志记录,ILogger < MyClass > 只会记录到 AI。
以下是注入 class 的示例。注意这个class也在其他项目中使用
public class CosmosDbService : ICosmosDbService
{
private readonly IDocumentClient _documentClient;
private readonly ILogger _logger;
public CosmosDbService(IDocumentClient documentClient, ILogger<CosmosDbService> logger)
{
_logger = logger;
_documentClient = documentClient;
}
public async Task<UserData> GetUserAsync()
{
try
{
// Getting user here
// (...)
}
catch (Exception ex)
{
_logger.LogError(ex, "Error fetching user.");
throw;
}
}
}
此 class 被注入为:
builder.Services.AddSingleton<IDocumentClient>(sp =>
{
// This does not really matter for this question
var configuration = sp.GetService<IConfiguration>();
var connectionString = configuration.GetValue<string>("COSMOS_DB_CONNECTION");
var cosmosDbConnectionString = new CosmosDbConnectionString(connectionString);
return new DocumentClient(cosmosDbConnectionString.ServiceEndpoint, cosmosDbConnectionString.AuthKey);
});
builder.Services.AddSingleton<ICosmosDbService, CosmosDbService>();
来自@PeterBons 的 也帮助我修复了错误的 resultCode。
基本上我导入了错误的包:Microsoft.Extensions.Logging.ApplicationInsights
我把它改成Microsoft.Azure.WebJobs.Logging.ApplicationInsights
并删除了启动中的代码。现在我再次正确填写了resultCode。
我有一个与 Application Insights 实例连接的函数应用程序。 当我查看有关应用程序洞察力的请求时,无论是否成功,所有条目的 resultCode 均为 0。我怎样才能正确显示 resultCode?
如果我没记错的话,我的函数应用程序 运行 版本为“3.0.14916.0”。
这是我的启动:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddLogging(loggingBuilder =>
{
var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
loggingBuilder.AddApplicationInsights(key);
});
builder.Services.AddSingleton(sp =>
{
var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
return new TelemetryConfiguration(key);
});
(...)
}
}
编辑 1:
在评论中有人问我为什么要在 Startup 中添加日志记录。我这样做是因为,据我所知,如果我在 Startup 中添加日志记录,ILogger < MyClass > 只会记录到 AI。 以下是注入 class 的示例。注意这个class也在其他项目中使用
public class CosmosDbService : ICosmosDbService
{
private readonly IDocumentClient _documentClient;
private readonly ILogger _logger;
public CosmosDbService(IDocumentClient documentClient, ILogger<CosmosDbService> logger)
{
_logger = logger;
_documentClient = documentClient;
}
public async Task<UserData> GetUserAsync()
{
try
{
// Getting user here
// (...)
}
catch (Exception ex)
{
_logger.LogError(ex, "Error fetching user.");
throw;
}
}
}
此 class 被注入为:
builder.Services.AddSingleton<IDocumentClient>(sp =>
{
// This does not really matter for this question
var configuration = sp.GetService<IConfiguration>();
var connectionString = configuration.GetValue<string>("COSMOS_DB_CONNECTION");
var cosmosDbConnectionString = new CosmosDbConnectionString(connectionString);
return new DocumentClient(cosmosDbConnectionString.ServiceEndpoint, cosmosDbConnectionString.AuthKey);
});
builder.Services.AddSingleton<ICosmosDbService, CosmosDbService>();
基本上我导入了错误的包:Microsoft.Extensions.Logging.ApplicationInsights
我把它改成Microsoft.Azure.WebJobs.Logging.ApplicationInsights
并删除了启动中的代码。现在我再次正确填写了resultCode。