1

J'essaie d'utiliser Application Insights pour enregistrer automatiquement les erreurs de formulaire/script de mon instance Dynamics 365, mais elles ne sont pas suivies.Erreurs de script du journal D365 sur Application Insights

j'ai commencé en créant une ressource Insights application dans Azure et en ajoutant le code JavaScript suivant (extrait de la section Mise en route de l'Insights App Resource) à ma forme de CRM (comme ce walkthrough):

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(); 

après cela, j'ai commencé à voir les données relatives aux pages vues et les temps de chargement de page de sorte que le suivi est activé:

enter image description here

Mon action suivante était alors de forcer quelques erreurs de script dans le formulaire pour visualiser ensuite dans Azure. Pour ce faire, j'ai ajouté une fonction JavaScript dans l'événement OnChange d'un champ pour obtenir une erreur « undefined »:

enter image description here

Comme vous pouvez le voir dans l'image précédente, l'erreur est jeté dans D365 comme prévu, mais il n'y a aucun enregistrement dans Application Insights. Après quelques tests j'ai commencé à suspecter que CRM rattrape cette erreur et ne la laisse pas atteindre le navigateur (l'erreur n'apparaît pas dans la console). Pour confirmer mes soupçons, j'ai créé une page Web HTML avec la même configuration Insights App et je simulé l'erreur de voir si, dans ce scénario, les erreurs sont suivies et la réponse est oui:

enter image description here

Il semble que Dynamics "avale" l'erreur et l'empêche d'être connecté. Est-ce que quelqu'un a déjà fait face à ce problème? Existe-t-il une solution de contournement que je peux utiliser pour suivre correctement les erreurs dans App Insights?

Merci! Dynamics CRM traitera le bloc de script personnalisé d'une manière spéciale.

+0

très heureux de voir mon walkthrough aide la communauté .. Avez-vous essayé try {...} catch (ex) {appInsights.trackException (ex); } –

Répondre

0

Nous devons attraper l'exception gracieusement dans notre formulaire js & connectez-le dans AI comme ci-dessous.

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

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

+1

Merci Arun, j'étais au courant de la fonction trackException mais je voudrais éviter cette approche principalement parce que l'instance de CRM a plus de 200 ressources web JavaScript et les refactoriser tous pour que cela soit douloureux. L'une des principales raisons d'utiliser App Insights pour consigner les erreurs de script est qu'il évite de refactoriser BEAUCOUP de code (cela ne devrait fonctionner que l'ajout d'une ressource web au formulaire), mais malheureusement il s'est avéré difficile dans un contexte CRM ... –