J'ai beaucoup lu sur le traçage et la journalisation, essayant de trouver une règle d'or pour les meilleures pratiques en la matière, mais il n'y en a pas. Les gens disent que les bons programmeurs produisent un bon traçage, mais disent-le comme ça et ça doit venir de l'expérience.
J'ai aussi lu des questions similaires ici et sur Internet et ce ne sont pas vraiment les mêmes choses que je pose ou je n'ai pas de réponse satisfaisante, peut-être parce que les questions manquent de détails.
Ainsi, les gens disent que le traçage devrait en quelque sorte reproduire l'expérience de débogage de l'application dans les cas où il est impossible d'attacher un débogueur. Il doit fournir suffisamment de contexte pour que vous puissiez voir quel chemin est pris à chaque point de contrôle de l'application.
En approfondissant, vous pouvez même distinguer entre le suivi et la journalisation des événements, en ce sens que "la journalisation des événements est différente du traçage car elle capture les états principaux plutôt que le flux de contrôle détaillé".
Maintenant, disons que je veux effectuer le traçage et la journalisation en utilisant uniquement les classes .NET standard, celles de l’ System.Diagnostics
espace de noms. J'ai pensé que la classe TraceSource était meilleure pour le travail que la classe Trace statique, car je souhaitais différencier les niveaux de trace et en utilisant la classe TraceSource, je pouvais transmettre un paramètre informant le type d'événement, tout en utilisant la classe Trace que je devais utiliser. Trace.WriteLineIf
et ensuite vérifier les choses comme SourceSwitch.TraceInformation
et SourceSwitch.TraceErrors
, et il n'a même pas de propriétés comme TraceVerbose
ou TraceStart
.
Avec tout cela à l'esprit, considéreriez-vous une bonne pratique à suivre:
- Tracez un événement "Start" au début d'une méthode, qui devrait représenter une seule opération logique ou un pipeline, ainsi qu'une représentation sous forme de chaîne des valeurs de paramètre transmises à la méthode.
- Trace un événement "Information" lors de l'insertion d'un élément dans la base de données.
- Tracez un événement "Information" lorsque vous prenez un chemin ou un autre dans une déclaration if / else importante.
- Tracez une "critique" ou une "erreur" dans un bloc catch, selon qu'il s'agisse ou non d'une erreur récupérable.
- Trace un événement "Stop" à la fin de l'exécution de la méthode.
Et aussi, s'il vous plaît préciser quand mieux tracer les types d'événements Verbose et Warning. Si vous avez des exemples de code avec une trace / journalisation agréable et êtes disposé à partager, ce serait excellent.
Remarque: j'ai trouvé quelques bonnes informations ici, mais toujours pas ce que je cherche: http://msdn.microsoft.com/en-us/magazine/ff714589.aspx