59 votes

Comment déterminer quel niveau de log à utiliser?

Les niveaux de journal WARN, ERROR et FATAL sont assez clairs. Mais quand est quelque chose DEBUG, et quand INFO?

J'ai vu des projets très verbeux au niveau INFO, mais j'ai aussi vu du code qui privilégie trop le niveau DEBUG. Dans les deux cas, des informations utiles sont cachées dans le bruit.

Quels sont les critères pour déterminer les niveaux de journalisation?

113voto

Cowan Points 17235

Je ne pense pas qu'il y a tout dur et rapide des règles; à l'aide de la log4j-niveaux de type, de mes "règles empiriques" sont quelque chose comme:

  • FATAL: l'application (ou à tout le moins un thread) est sur le point de mourir horriblement. C'est là que l'info expliquant pourquoi que se passe se passe.
  • ERREUR: quelque chose que l'application fait qu'il ne devrait pas. Ce n'est pas une erreur de l'utilisateur ("invalid requête de recherche'); c'est un échec d'assertion, problème de réseau, etc, etc., probablement celui qui va annuler l'opération en cours
  • AVERTIR: quelque chose d'inquiétant, mais ne provoquant pas l'opération pour annuler; nombre de connexions dans la DB de la piscine devient faible, une étrange-mais-prévu délai d'attente d'une opération, etc. Je pense souvent à l'option "AVERTIR" comme quelque chose qui est utile dans l'ensemble; par exemple, grep, groupe, et de les compter pour obtenir une image de ce qui affectent le système de santé
  • INFO: Normal journalisation, qui fait partie du fonctionnement normal de l'application, des trucs de sorte que vous pouvez revenir en arrière et dire: "combien de fois n'cette vaste opération au niveau de arriver?", ou " comment les données de l'utilisateur d'arriver dans ce pays?"
  • DEBUG: Désactivé par défaut, capable d'être activé pour le débogage spécifiques à des problèmes inattendus. C'est là que vous pourriez journal des informations détaillées sur les principaux paramètres de la méthode, ou d'autres informations qui sont utiles pour identifier les problèmes possibles dans les "problématiques" régions " du code.
  • TRACE: "Sérieusement, WTF qui se passe ici?!?! J'ai besoin de vous connecter à chaque déclaration, j'ai exécuter pour trouver ce @#$@ing corruption de la mémoire bug avant de me rendre fou"

Pas gravé dans la pierre, mais une idée approximative de la façon dont je pense à elle.

7voto

Unsliced Points 5800

De manière informelle-je utiliser ce type de hiérarchie,

  • DEBUG - la trace des valeurs
  • INFO - quelque Chose vient de se passer - rien d'important, juste un drapeau
  • Garde - la tout fonctionne, mais quelque chose n'est pas tout à fait ce qui était attendu
  • ERREUR - quelque chose s'est passé qui ont besoin d'être fixé, mais nous pouvons continuer et de faire d'autres (indépendants) activités
  • FATAL - un assez grave problème que nous ne devrions même pas tenir

Je vais libèrent généralement avec des INFOS consignées, mais seulement si je sais que les fichiers journaux sont réellement passés en revue (et la taille n'est pas un problème), sinon il AVERTIR.

5voto

GavinCattell Points 2435

Pensez à qui doit utiliser chaque niveau. Dans mon code, je garde réservé DEBUG à une sortie de développeur, par exemple une sortie qui aiderait seulement un développeur. VERBOSE est utilisé pour un utilisateur normal lorsque beaucoup d'informations sont nécessaires. INFO J'utilise habituellement pour montrer les événements majeurs (p. Ex. Envoi d'une page Web, vérification de quelque chose d'important).

Et FAIL et WARN s’expliquent assez bien.

3voto

slashnick Points 9773

Dans mon équipe, la convention est d'utiliser debug si quelque chose est calculé dans le message, alors que info est utilisé pour le texte brut. Donc, en effet, info vous montrera ce qui se passe et debug montrera les valeurs de ce qui se passe.

1voto

paxdiablo Points 341644

J'ai tendance à cibler INFO vers l'utilisateur pour lui donner des messages qui ne sont même pas des avertissements. DEBUG est généralement destiné aux développeurs, où je produis des messages pour aider à suivre le flux dans le code (avec les valeurs de variables également).

J'aime aussi un autre niveau de DEBUG (DEBUG2?) Qui donne des charges absolues d'informations de débogage, telles que des vidages hexadécimaux de tous les tampons, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X