Je souhaite utiliser des journaux dans mon programme. J'ai entendu parler de java.util.logging , mais je ne sais pas par où commencer.
Y a-t-il des exemples de ce que je peux faire avec la journalisation? Comment utiliser la journalisation dans mon propre programme?
java
logging
java.util.logging
Renato Dinhani
la source
la source
Réponses:
java.util.logging
vous évite d'avoir à transporter un fichier jar de plus avec votre application, et cela fonctionne bien avec un bon formateur.En général, au sommet de chaque classe , vous devriez avoir:
Ensuite, vous pouvez simplement utiliser diverses fonctionnalités de la classe Logger .
Utilisez
Level.FINE
pour tout ce qui débogue au niveau supérieur du flux d'exécution:Utilisez
Level.FINER
/ à l'Level.FINEST
intérieur des boucles et dans des endroits où vous n'aurez pas toujours besoin de voir autant de détails lors du débogage des problèmes de flux de base:Utilisez les versions paramétrées des fonctions de journalisation pour éviter de générer des tonnes de déchets de concaténation de chaînes que le GC devra suivre.
Object[]
comme ci-dessus est bon marché, sur l'allocation de pile généralement.Avec la gestion des exceptions, enregistrez toujours les détails complets de l'exception:
Je passe toujours
ex.toString()
le message ici, car lorsque je "grep -n
" pour "Exception
" dans les fichiers journaux, je peux aussi voir le message. Sinon, il se trouvera sur la prochaine ligne de sortie générée par le vidage de la pile, et vous devez également disposer d'un RegEx plus avancé pour correspondre à cette ligne, ce qui vous donne souvent plus de sortie que vous n'en avez besoin.la source
.fine()
méthode pour se connecter, mais je n'arrive pas à afficher les messages ...Devrait déclarer l'enregistreur comme ceci:
donc si vous refactorisez le nom de votre classe, cela suit.
J'ai écrit un article sur Java Logger avec des exemples ici .
la source
Il existe de nombreux exemples et également de différents types de journalisation. Jetez un œil au package java.util.logging .
Exemple de code:
Sans coder en dur le nom de la classe :
la source
Main.class.getSimpleName()
? De cette façon, l'outil de refactoring va le changer correctement si nécessaire et pourtant, ce n'est pas aussi maladroit que votre deuxième solution.SLF4J est une meilleure façade de journalisation que Apache Commons Logging (ACL). Il a des ponts vers d'autres cadres de journalisation, faisant des appels directs à ACL, Log4J ou Java Util Logging via SLF4J, de sorte que vous pouvez diriger toutes les sorties vers un fichier journal si vous le souhaitez, avec un seul fichier de configuration de journal. Pourquoi votre application utiliserait-elle plusieurs cadres de journalisation? Parce que les bibliothèques tierces que vous utilisez, en particulier les plus anciennes, le font probablement.
SLF4J prend en charge diverses implémentations de journalisation. Il peut tout sortir en sortie standard, utiliser Log4J ou Logback (recommandé sur Log4J).
http://www.slf4j.org/
http://logback.qos.ch/
la source
J'utiliserais minlog , personnellement. C'est extrêmement simple, car la classe de journalisation est de quelques centaines de lignes de code.
la source
Je vous suggère d'utiliser l'utilitaire de journalisation des communs d'Apache. Il est hautement évolutif et prend en charge des fichiers journaux distincts pour différents enregistreurs. Voyez ici .
la source