LittleWatson est un outil permettant de récupérer et d'envoyer par email les exceptions non gérées sur Windows Phone. Il a été développé par Andy Pennell. Je vais vous expliquer ici comment le porter sur Windows 8.

LittleWatson est un outil permettant de récupérer et d’envoyer par email les exceptions non gérées sur Windows Phone. Il a été développé par Andy Pennell (http://blogs.msdn.com/b/andypennell/archive/2010/11/01/error-reporting-on-windows-phone-7.aspx).

Je vais vous expliquer ici comment le porter sur Windows 8.

Fonctionnement

LittleWatson contient deux méthodes importantes :

  • ReportException : Qui enregistre l’exception dans l’Isolated Storage
  • CheckForPreviousException : Qui vérifie dans l’Isolated Storage s’il existe une exception précédemment enregistrée puis génère un email. Une fois envoyé, elle supprime le fichier.

ReportException, se place dans le Application_UnhandledException  de l’App.xaml.cs ainsi que dans le NavigationFailed.
De cette manière, nous pouvons récupérer toutes les exceptions non traités ainsi que les erreurs de navigation.

Au démarrage de l’application, on lance CheckForPreviousException pour vérifier l’existence d’un rapport d’erreur et le transmettre le cas échéant.

Portage

J’ai gardé le même fonctionnement sous Windows 8. Il faut cependant modifier la partie d’enregistrement qui diffère ainsi que la gestion des emails. Vous trouverez un exemple ici : http://sdrv.ms/RiiHeS

Pour les emails, vous retrouverez ma classe EmailChooserTask que je développe plus amplement dans cet article (http://onefor4.wordpress.com/2012/09/03/windows-8-lancer-lapplication-email-depuis-une-application/).

La sérialisation se passe ici dans le Local Storage. J’ai fait un Storage Helper pour enregistrer directement vos rapports. Mais vous pouvez implémenter votre propre solution de stockage en modifiant les méthodes SafeDelete et SafeLoad. Vous trouverez d’ailleurs un helper tout prêt ici : http://winrtstoragehelper.codeplex.com/

Problématiques

- Je n’ai pas trouvé comment récupérer les exceptions asynchrones. Si vous avez des retours, des idées, n’hésitez pas que j’améliore ce composant.

- Vous ne souhaitez peut-être pas que vos utilisateurs voient ce formulaire. Pensez à utiliser les directives #if DEBUG #endif autour des appels de LittleWatson. De cette manière, les exceptions ne seront enregistrées qu’en mode Debug.

Conclusion

Nous avons vu dans cet article comment enregistrer une exception puis la récupérer facilement pour l’envoyer par email.
A vous maintenant de voir si vous souhaitez garder un historique de log à l’intérieur de l’application ou utiliser d’autres moyens pour récupérer ces rapports.

Par JC VASSELON

Commentaires

Vous devez vous inscrire ou vous connecter pour poster un commentaire