.net core Azure功能和应用程序遥测
我正试图从HttpTrigger Azure Function v3增强AppInsights中的RequestTelemetry 函数是用DI和启动类初始化的.net core Azure功能和应用程序遥测,.net-core,azure-functions,azure-application-insights,telemetry,.net Core,Azure Functions,Azure Application Insights,Telemetry,我正试图从HttpTrigger Azure Function v3增强AppInsights中的RequestTelemetry 函数是用DI和启动类初始化的 [程序集:函数启动(类型(启动))] 命名空间Hager.Example.FunctionApp.FunctionApp { 公共类启动:函数启动 { 公共覆盖无效配置(IFunctionsHostBuilder) { //无需重新安装服务 } } } 以及我的职能 公共类函数1 { 专用只读ILogger\u记录器; 公共功能1(I
[程序集:函数启动(类型(启动))]
命名空间Hager.Example.FunctionApp.FunctionApp
{
公共类启动:函数启动
{
公共覆盖无效配置(IFunctionsHostBuilder)
{
//无需重新安装服务
}
}
}
以及我的职能
公共类函数1
{
专用只读ILogger\u记录器;
公共功能1(ILogger记录器)
{
_记录器=记录器;
}
[函数名(“HttpTriggered”)]
公开结果运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]HttpRequestMessage请求
{
使用var loggerScope=_logger.BeginScope(“{InScope1}{InScope2}{InScope3}”、Guid.NewGuid()、Guid.NewGuid()、Guid.NewGuid());
_logger.LogInformation(“已开始执行”);
_logger.LogWarning(“具有自定义属性:{CustomProperty}.”,Guid.NewGuid());
Activity.Current?.AddTag(“TagStart”,Guid.NewGuid());
如果(Activity.Current==null)
{
//总是空的
_logger.LogError(“无ActivityCurrent{Activity}.”,Activity.Current);
_logger.LogError(“ActivityCurrent标记{Activity}.”,Activity.Current?标记);
}
//Activity.Current.AddTag(“Tag2”,Guid.NewGuid());//更新:
添加了Op的解决方案:通过使用request.HttpContext?.Features.Get()
,它运行良好
请卸载2个Application Insights软件包
:Microsoft.ApplicationInsights
和Microsoft.ApplicationInsights.AspNetCore
默认情况下,Application Insights包不收集活动标记。因此这应该是原因
我在没有安装上述2个Application Insights软件包的情况下测试了你的azure功能,它运行良好。以下是测试结果的屏幕截图:
在此处添加my local.settings.json供您参考,代码与您的相同:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "xxxx",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": "xxx"
}
}
如果这两个包是必需的,也许你可以尝试添加一个自定义的ITelemetryInitializer
,方法如下(顺便说一句,我没有测试它)。谢谢你的回答,但它对我不起作用…我不明白…可能是框架版本的不同…我最后使用了request.HttpContext?.Features.Get()
,它成功了fine@JTE,可能是。我在答案中添加了您的解决方案。如果有帮助,您可以接受它作为答案吗?谢谢。如果您想找出根本原因,我们可以通过删除个人信息通过github共享代码,然后我可以继续处理。