首页 > 解决方案 > 如何为 Application Insights 获取正确的 JavaScript 日志记录

问题描述

我希望有人可以回答为什么日志记录发生在一个位置而不是另一个位置的问题。我正在使用基于片段的设置来启用日志记录,并且我有两个简单的测试日志,我将它们输入到页面上的 JavaScript 中。

$(document).ready(function () {
    RetrieveSessionData(function (d) {
        formData = d;
        var prop = { "SessionCode": getSessionCode() };
        var met = { "model risk type": formData.projectionData.modelRiskType };
        appInsights.trackEvent("ACTIONS-JS-READY", prop, met);
        appInsights.trackEvent("ACTIONS-JS-READY2", "prop", "met");
        appInsights.flush();
    });
    var properties = { "SessionCode": getSessionCode() };
    var metrics = { "metrics field": 10 };
    appInsights.trackEvent("ACTIONS-JS", properties, metrics);
    appInsights.flush();
});

RetrieveSessionData 函数中的 appInsights.trackEvent 行不记录任何内容,也不返回任何类型的错误/消息,让我知道存在问题。脚本底部的那个,在函数之外,确实将自定义事件记录到应用程序洞察中。

我在这方面缺少什么?我还没有找到任何关于在函数内部进行 JavaScript 日志记录的正确方法的具体示例,还是不能这样做?

标签: javascriptazure-application-insights

解决方案


正如 OP 在评论中所说,微软网站上的代码片段将起作用。


我不确定,但我在我身边进行了测试,它确实有效,这是我的代码。您是否检查过参数中的代码是否RetrieveSessionData已执行?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            snippet-code-copy-from-tutorial-here
                instrumentationKey: "ceec379c-xxxxx-4296327"
            }});
        </script>
        <script src="../js/jquery-3.5.1.min.js"></script>
    </head>
    <body>
        <div>this is page</div>
        <script>
            $(document).ready(function() {
                console.log("============execute===============");
                   RetrieveSessionData(function (d) {
                       formData = d;
                       var prop = { "SessionCode": "aa" };
                       var met = { "model risk type": "bbb" };
                       appInsights.trackEvent("ACTIONS-JS-READY", prop, met);
                       appInsights.trackEvent("ACTIONS-JS-READY2", "prop", "met");
                       appInsights.flush();
                   });
                
                console.log("============execute222===============");
                var properties = {
                    "SessionCode": "session_code_01"
                };
                var metrics = {
                    "metrics field": 10
                };
                appInsights.trackEvent("ACTIONS-JS", properties, metrics);
                appInsights.flush();
            });
            
            function RetrieveSessionData(func){
                func();
            }
        </script>
    </body>
</html>

截图自定义属性


推荐阅读