【发布时间】:2020-04-02 10:41:46
【问题描述】:
我需要记录 Azure 中函数应用的 所有 调用(无论成功与否)的信息。我第一次尝试只使用 log.LogInformation() 并发现消息不是从所有函数调用中写入的。通过一些研究,我了解到在高负载场景中(我的场景是高负载场景),有时运行时决定不记录一些成功的调用。很公平。
然后我尝试使用自定义事件进行日志记录并捕获我需要的信息:
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
TelemetryClient tc = new TelemetryClient(config);
Dictionary<string, string> props = new Dictionary<string, string>();
props["msgid"] = msgid;
tc.TrackEvent("MsgToBenefitsService", props);
仍然没有运气,在我进行的一些运行中,我在 1000 次调用的应用洞察中只看到了 82 行。我找不到任何说明可能未记录自定义事件的文档,所以我预计我会看到 1000 次调用记录了 1000 个事件。
上面的日志记录代码有什么问题吗?是否有任何选项可以保证我可以将信息从调用写入 AppInsights ?或者我是否坚持必须从函数应用程序中明确记录自己?
作为背景,此函数应用有一个服务总线触发器,用于从主题中读取消息。我正在使用运行时的 v3。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
可能由于采样而过滤掉了结果?您可以手动排除事件,请参阅the docs
-
我没有明确的答案,但我建议将 TelemetryClient 设置为静态成员变量,而不是为每个请求重新创建一个新变量。您在大量情况下从您的函数生成大量出站连接,而这些出站连接是有限的。
标签: azure function appinsights