introduction
Si une erreur se produit sur un site Web ou un système, il est bien sûr utile de l'enregistrer et de montrer à l'utilisateur un message poli avec un code de référence pour l'erreur.
Et si vous avez beaucoup de systèmes, vous ne voulez pas que ces informations soient disséminées - il est bon d'avoir un seul emplacement centralisé pour cela.
Au niveau le plus simple, tout ce qui est nécessaire est un identifiant d'incrémentation et un vidage sérialisé des détails de l'erreur. (Et peut-être le "lieu centralisé" étant une boîte de réception de courrier électronique.)
À l'autre extrémité du spectre se trouve peut-être une base de données entièrement normalisée qui vous permet également d'appuyer sur un bouton et de voir un graphique des erreurs par jour, ou d'identifier le type d'erreur le plus courant sur le système X, si le serveur A a plus de base de données des erreurs de connexion que le serveur B, etc.
Je fais référence ici à la journalisation des erreurs / exceptions au niveau du code par un système distant - et non au suivi des problèmes "basé sur l'homme", comme cela est fait avec Jira, Trac, etc.
Des questions
Je suis à la recherche de réflexions de développeurs qui ont utilisé ce type de système, en particulier en ce qui concerne:
- Quelles sont les fonctionnalités essentielles dont vous ne pourriez pas vous passer?
- Quels sont les avantages d'avoir des fonctionnalités qui vous font vraiment gagner du temps?
- Quelles fonctionnalités peuvent sembler une bonne idée, mais ne sont-elles pas vraiment utiles?
Par exemple, je dirais qu'une fonction "afficher les doublons" qui identifie l'occurrence multiple d'une erreur (sans se soucier des détails "sans importance" qui pourraient différer) est assez essentielle.
Un bouton pour "créer un problème dans [Jira / etc] pour cette erreur" sonne comme un bon gain de temps.
Juste pour réitérer, ce que je recherche, ce sont des expériences pratiques de personnes qui ont utilisé de tels systèmes, de préférence avec les raisons pour lesquelles une fonctionnalité est géniale / terrible.
(Si vous allez théoriser de toute façon, marquez au moins votre réponse comme telle.)
la source
Réponses:
J'ai été dans un projet où avec des erreurs client enregistrées à l'aide de la bibliothèque Microsoft Enterprise . Toute exception où envoyer à notre boîte aux lettres. Dans l'objet du courrier, nous avons ajouté un code de hachage d'erreur sérialisé pour éviter les messages en double. On pourrait bien sûr stocker des messages sérialisés dans une base de données et ainsi de suite.
Je vous recommande de consulter la bibliothèque Microsoft Enterprise et Log4Net .
Quelques fonctionnalités de Log4Net
la source
Dans le cas des applications de base de données, une sorte d'ID (comme
<TABLE>:<PrimaryKeyID>
) qui vous permet de suivre les enregistrements dans la base de données liés à l'étendue où l'exception a été interceptée.Je l'ai fait avec Oracle et PL / SQL, en enregistrant l'ID dans une table de base de données dans l'application, à partir du gestionnaire d'exceptions.
la source
Une grande partie de ce que vous décrivez (c'est-à-dire les parties spécifiques de la journalisation) sont implémentées dans la bibliothèque d'entreprise comme l'a noté Amir Rezaei. Tout le reste semble être davantage de la partie analytique (c'est-à-dire que faire des journaux par la suite).
Dans mon cas, j'ai créé de petites applications et des scripts SQL qui ont facilité certaines choses. Voici certaines des choses que j'ai vraiment aimées:
la source
Parfois, les informations du journal sont tout simplement trop volumineuses pour être stockées sur le disque. Une approche que j'ai vue consiste à écrire vos entrées de journalisation dans un firehose (dans, disons, perl) quelque chose comme ceci:
alors un analyste peut comprendre ce qu'il veut regarder.
la source
Voici certaines choses que j'ai apprises de la surveillance des erreurs dans nos applications:
J'ai obtenu d'excellents résultats pour log4net, car il est très facile de se connecter à plusieurs endroits et d'apporter également des modifications à la configuration de la journalisation.
la source
elmah est un système de journalisation des erreurs open source pour les applications ASP.NET et peut être ajouté à un système existant (à l'aide de NuGet http://nuget.codeplex.com/ ) rapidement et facilement. Il prend en charge divers backends et fonctions de notification.
Je ne connais personne qui l'ait ajouté à une application de bureau car il s'exécute en tant que site Web, mais rien ne vous empêche de l'exécuter en tant que service et de publier vos exceptions sur le Web.
http://code.google.com/p/elmah/
la source