Section courante

A propos

Section administrative du site

Applications de téléchargement du journal des erreurs

ELMAH permet de télécharger l'intégralité du journal des erreurs au format CSV, ce qui peut s'avérer utile pour des analyses ponctuelles et ponctuelles. Par exemple, vous pouvez filtrer et créer des graphiques avec Microsoft Excel et/ou Microsoft Log Parser. La fonction de téléchargement prend également en charge un format supplémentaire appelé HTML-JSONP dans ELMAH. Ce format permet de créer des pages de reporting dynamiques et asynchrones à partir du journal des erreurs.

Au format HTML-JSONP, ELMAH produit un document HTML unique avec des rappels JSONP intégrés dans des balises de script. Chaque rappel génère une page contenant une centaine d'erreurs. Pour un résultat optimal, le document HTML est conçu pour être hébergé dans une iframe d'un document parent, auquel sont envoyés des rappels JSONP. Cela présente deux avantages : d'une part, le document HTML iframe se charge de manière désynchronisée, tandis que le document parent reste interactif. d'autre part, ELMAH diffuse le document par blocs afin que le navigateur puisse analyser et évaluer chaque balise de script dès son arrivée et effectuer les rappels JSONP sur le document parent. Ainsi, le document parent ou hôte peut traiter une page d'erreurs dès sa réception, évitant ainsi à l'utilisateur d'attendre le téléchargement complet du journal avant de recevoir des commentaires ou des rapports. Ceci est particulièrement important lorsque le journal est volumineux ou si vous naviguez sur un appareil mobile (téléphone ou tablette) avec une latence réseau élevée.

Le format HTML-JSONP est demandé en ajoutant une requête à l'URL de téléchargement du journal avec les champs ou paramètres nommés suivants :

Nom Obligatoire Description
format Oui Doit être au format HTML-JSONP
callback Oui Méthode JavaScript côté client à appeler
limit Non Nombre maximal d'erreurs les plus récentes à renvoyer du journal (le journal complet est renvoyé en cas d'omission)

Supposons qu'ELMAH soit déployé à l'adresse http://www.example.com/elmah.axd et que l'URL de téléchargement soit http://www.example.com/elmah.axd/download, vous devez demander le format HTML-JSONP via http://www.example.com/elmah.axd/download?format=html-json&callback=parent.onerrors. Le paramètre callback identifie la fonction JavaScript à rappeler ; on suppose ici qu'une fonction onerrors est définie dans la fenêtre parente. Dans le document HTML supérieur, vous devriez avoir une iframe comme celle-ci :

  1. <iframe width="0" height="0"
  2.         src="http://www.example.com/elmah.axd/download?format=html-json&callback=parent.onerrors"></iframe>

La fonction de rappel reçoit à chaque fois une valeur d'objet unique avec deux propriétés : total et errors. total est toujours un nombre représentant le nombre total d'erreurs enregistrées dans le journal, tandis que errors est un tableau d'objets représentant les entrées d'erreur réelles. Voici un exemple d'entrée de ce type au format JSON :

  1. {
  2.   "application":"/LM/W3SVC/3/ROOT",
  3.   "host":"EXAMPLEHOST",
  4.   "type":"System.FormatException",
  5.   "message":"Le Guid doit contenir 32 chiffres avec 4 tirets (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).",
  6.   "source":"mscorlib",
  7.   "time":"2010-01-05T12:13:03.280Z",
  8.   "hrefs":[
  9.     {
  10.       "type":"text/html",
  11.       "href":"http://www.example.com/elmah.axd/detail?id=165fcfa3-ad18-41b0-9240-4357e29d4db3"
  12.     },
  13.     {
  14.       "type":"aplication/json",
  15.       "href":"http://www.example.com/elmah.axd/json?id=165fcfa3-ad18-41b0-9240-4357e29d4db3"
  16.     },
  17.     {
  18.       "type":"application/xml",
  19.       "href":"http://www.example.com/elmah.axd/xml?id=165fcfa3-ad18-41b0-9240-4357e29d4db3"
  20.     }
  21.   ]
  22. }

Notez que le tableau hrefs peut être utilisé pour obtenir des détails supplémentaires sur l'erreur dans différents formats (HTML, JSON et XML). Pour indiquer à la fonction de rappel que le journal complet a été transmis, ELMAH émet un dernier rappel lorsque le tableau d'erreurs est vide.

La fonction de rappel doit être conçue pour gérer les doublons et un nombre total d'erreurs variable. Ces deux situations peuvent se produire, par exemple, lorsque de nouvelles erreurs sont enregistrées pendant le téléchargement du journal. C'est pourquoi ELMAH fournit le nombre total d'erreurs à chaque rappel et page d'erreurs.

Elvue est un exemple open source et fonctionnel d'une page HTML unique produisant un rapport tabulaire et graphique des types d'erreurs enregistrées dans un journal d'erreurs ELMAH (voir la capture d'écran ci-dessous). Nous vous encourageons à étudier la source et à apporter vos idées.



Dernière mise à jour : Mercredi, le 23 novembre 2022