4.1 Liste des niveaux de journalisation
Vous avez écrit votre programme, l'avez téléchargé sur le serveur, puis vous commencez immédiatement à vous poser des questions :
- Comment s'assurer que
debug()
la méthode ne fonctionne pas en travaillant dansproduction
? - Il y a trop d'informations dans les journaux, souhaitez-vous ne laisser que des messages d'erreur ?
- Comment voir un journal détaillé pour une partie de l'application ?
Bien sûr, les créateurs des bûches ont fait face à la même chose il y a des décennies. Je ne vous dirai pas comment ce problème a été résolu en langage C, mais en langage Java, il a été très bien résolu.
Le journal filtre les données avant d'écrire les informations dans le fichier . Vous pouvez très rapidement réduire/augmenter le détail du journal en définissant le niveau de journalisation. Ces niveaux sont décrits dans le tableau ci-dessous :
Niveau | Note | |
---|---|---|
1 | TOUS | Enregistrer tous les messages |
2 | TRACE | Petit message lors du débogage |
3 | DÉBOGUER | Messages importants pour le débogage |
4 | INFO | Messages simples |
5 | AVERTIR | N'écrivez que fatal, erreur et avertissement |
6 | ERREUR | Écrire uniquement les erreurs et les erreurs fatales |
7 | FATAL | Ecrire uniquement les erreurs fatales |
8 | DÉSACTIVÉ | Ne pas écrire de messages dans le journal |
Ces niveaux sont utilisés lors du filtrage des messages. Si vous définissez le niveau de journalisation sur WARN
, tous les messages moins importants que WARN
seront ignorés : TRACE
, DEBUG
, INFO
. Si vous réglez le niveau de filtrage sur FATAL
, alors même ERROR
.
Deux autres niveaux de sévérité sont utilisés dans le filtrage - ceci OFF
(ignorer tous les messages) et ALL
- écrire tous les messages (ne rien ignorer).
4.2 Exemple de configuration de journal
Examinons un exemple simple de configuration de journal. Pour ce faire, nous avons besoin du fichier log4j.properties, qui peut être placé dans le dossier des ressources. Ajoutons-y le contenu suivant :
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
Ici, dans la toute première ligne, nous définissons le niveau de journalisation - WARN
. Et cela signifie que les messages écrits dans l'enregistreur avec le statut DEBUG
seront INFO
ignorés.
- Précisez quel type d'appender nous utiliserons -
ConsoleAppender
- Spécifiez où nous allons écrire le journal -
System.out
- Nous définissons la classe qui contrôlera le format d'enregistrement -
PatternLayout
- Définir le format d'enregistrement pour tous les messages - date et heure
4.3 Erreurs de journalisation courantes
Et un autre point important - les erreurs courantes de journalisation. Il n'y a pas tellement d'options pour faire quelque chose, mais plusieurs erreurs courantes peuvent être identifiées :
- Trop de journalisation . Vous ne devez pas enregistrer chaque étape, ce qui peut théoriquement être important. Il existe une règle : les journaux ne peuvent pas charger les performances de plus de 10 % . Sinon, il y aura des problèmes de performances.
- Enregistrement de toutes les données dans un seul fichier . Cela rendra très difficile la lecture/écriture à un moment donné, sans compter qu'il existe des limites de taille de fichier sur certains systèmes.
- Utiliser les mauvais niveaux de journalisation . Chaque niveau de journalisation a des limites claires, et elles doivent être respectées. Si la limite est vague, vous pouvez vous mettre d'accord sur le niveau à utiliser.