简短:有没有办法将自定义ITelemetryInitializer添加到AzureFunction应用程序?
长: 在成功地将我们的AzureFunction应用程序与ApplicationInsights集成并彻底检测我们的代码之后,我们很快就明白我们需要将各种跟踪和请求遥测相关联在一起。为此,我们希望重用我们写入称为SessionId的所有跟踪日志的自定义属性。
快速搜索产生了this SO post和this Docs article。问题是这些文章假设我可以访问某些启动事件或服务器上的ApplicationInsights.config文件。我可能错了,但我不相信我可以访问其中任何一个。
所以我的问题是,如何使用AzureFunctions做到这一点?
答案 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包的版本。
期待未来更好的支持。