1

Application Insightsを使用して、Dynamics 365インスタンスからフォーム/スクリプトエラーを自動的にログに記録しようとしていますが、それらは追跡されていません。Application InsightsでD365スクリプトエラーをログに記録する

私はアズールでのアプリケーションの洞察リソースを作成し、(ちょうどこのwalkthroughのように)私のCRMフォームに(アプリケーションの洞察リソースからはじめセクションから抽出された)次のJavaScriptを追加することによって開始:

var appInsights=window.appInsights||function(config){ 
function i(config) { t[config] = function() { var i = arguments; t.queue.push(function() { t[config].apply(t, i) }) } }var t={config:config},u=document,e=window,o="script",s="AuthenticatedUserContext",h="start",c="stop",l="Track",a=l+"Event",v=l+"Page",y=u.createElement(o),r,f;y.src=config.url||"https://az416426.vo.msecnd.net/scripts/a/ai.0.js";u.getElementsByTagName(o)[0].parentNode.appendChild(y);try{t.cookie = u.cookie}catch(p){}for(t.queue=[],t.version="1.0",r=["Event","Exception","Metric","PageView","Trace","Dependency"];r.length;)i("track"+r.pop());return i("set"+s),i("clear"+s),i(h+a),i(c+a),i(h+v),i(c+v),i("flush"),config.disableExceptionTracking||(r="onerror",i("_"+r),f=e[r],e[r]=function(config,i,u,e,o){var s=f&&f(config,i,u,e,o);return s!==!0&&t["_"+r](config,i,u,e,o),s}),t 
    }({ 
      instrumentationKey:"XXXXX" 
    }); 

    window.appInsights=appInsights; 
    appInsights.trackPageView(); 

enter image description here

私の次のアクションは、いくつかのスクリプトエラーを強制的に次いで:トラッキングが有効になっているので、この後、私は、ページビュー、ページのロード時間に関連するデータを見るために始めましたAzureで視覚化するという形で。これを行うために、私は「未定義」エラーを取得するために、フィールドのOnChangeイベントにJavaScript関数を追加しました:

enter image description here

前の画像で見ることができるように、エラーがでスローされていますD365は予想どおりですが、Application Insightsにはその記録はありません。いくつかのテストの後、私はCRMがそのエラーをキャッチしていて、それがブラウザに届かないことを疑うようになりました(エラーはコンソールに表示されません)。私の疑念を確認するために、私は同じアプリの洞察に構成されたHTMLウェブページを作成し、私はそのシナリオにエラーが追跡されているとの答えがイエスであるかどうかを確認するために、エラーをシミュレート:

enter image description here

だから、ダイナミクスはエラーを「呑み込んで」、ログに記録されないように見えます。これまで誰もがこの問題に直面したことはありますか? App Insightsへのエラーを正常に追跡するための回避策がありますか?

ありがとうございます!

+0

あなたがしようとしてみました..私のウォークスルーは、コミュニティを支援しています見て非常に幸せ{...}キャッチ(EX){appInsights.trackException(EX); } –

答えて

0

ダイナミックCRMは、カスタムスクリプトブロックを特別な方法で処理します。

私たちのフォームjs &で優雅に例外をキャッチする必要があります、以下のようにAIでログインします。

try { ... } catch (ex) { appInsights.trackException(ex); }

参考:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-custom-events-metrics#trackexception

+1

ありがとうございましたArun、私はtrackException関数を認識していましたが、CRMインスタンスに200以上のJavaScript Webリソースがあり、これを含むリファクタリングがすべて苦痛になるため、このアプローチを主に避けたいと思います。 App Insightを使用してスクリプトエラーをログに記録する主な理由の1つは、多くのコードをリファクタリングすることなく(フォームにWebリソースを追加するだけで動作するはずです)、残念ながらCRMコンテキストでは扱いにくいことが判明しています... –

関連する問題