AzureFunctions

时间:2018-06-15 01:27:32

标签: azure azure-functions azure-application-insights

简短:有没有办法将自定义ITelemetryInitializer添加到AzureFunction应用程序?

长: 在成功地将我们的AzureFunction应用程序与ApplicationInsights集成并彻底检测我们的代码之后,我们很快就明白我们需要将各种跟踪和请求遥测相关联在一起。为此,我们希望重用我们写入称为SessionId的所有跟踪日志的自定义属性。

快速搜索产生了this SO postthis Docs article。问题是这些文章假设我可以访问某些启动事件或服务器上的ApplicationInsights.config文件。我可能错了,但我不相信我可以访问其中任何一个。

所以我的问题是,如何使用AzureFunctions做到这一点?

2 个答案:

答案 0 :(得分:1)

不,它无法自定义。有work in progress允许,但它还没有。

您可以查看有关这些Github问题的更多详细信息

application insights integration - ITelemetryInitializer doesn't have any effects #1416

Unable to access TelemetryConfiguration in DefaultTelemetryClientFactory (App Insights) #1556

修改

天蓝色功能v2可能。 有关stackoverflow问题的问题在这里:

Custom Application Insight TelemetryInitializer using Azure Function v2

问题已解决,从版本Microsoft.Net.Sdk.Functions 1.0.25一切正常,更多在这里:

https://github.com/Azure/azure-functions-host/issues/3731#issuecomment-465252591

答案 1 :(得分:0)

我想出的一个 令人厌恶的 解决方案是反映到传递给函数的ILogger,以获取隐藏在其中的ILogger数组。然后找到ApplicationInsightsLogger ILogger并更难反映出它使用的TelemetryClient。一旦你得到这个,你只需在客户端的上下文中设置SessionId属性。

这有效"伟大"但是,我现在不仅在我的代码中反映了我必须降级我正​​在使用的类型转换的ApplicationInsights包的版本。

期待未来更好的支持。