151 votes

Journalisation Java et Log4J

Est-il encore utile d'ajouter la bibliothèque log4j à un projet Java 5 pour enregistrer, disons, quelques exceptions dans un fichier avec de jolis paramètres de retournement ? disons quelques exceptions dans un fichier avec de jolis paramètres de retournement. Ou la fonction standard util.logging fera-t-elle aussi bien l'affaire ?

Qu'en pensez-vous ? Merci de partager vos réflexions !

127voto

Matt Sheppard Points 32256

Je dirais que vous êtes probablement bien avec util.logging pour les besoins que vous décrivez.

Pour un bon arbre de décision, jetez un coup d'œil à Log4j vs java.util.logging

Première question : Prévoyez-vous un besoin pour l'un des gestionnaires intelligents de Log4j que JUL n'a pas, comme le SMTPHandler, le NTEventLogHandler, ou l'un des très pratiques FileHandlers ?

Deuxième question : Vous voyez-vous changer fréquemment le format de votre sortie d'enregistrement ? Aurez-vous besoin d'un moyen facile et flexible pour le faire ? En d'autres termes, avez-vous besoin du PatternLayout de Log4j ?

Question trois : Prévoyez-vous un besoin certain de pouvoir modifier des configurations de journalisation complexes dans vos applications, après qu'elles aient été compilées et déployées dans un environnement de production ? Votre configuration ressemble-t-elle à quelque chose comme : "Les messages graves de cette classe sont envoyés par e-mail au responsable du support ; les messages graves d'un sous-ensemble de classes sont enregistrés dans un fichier syslog sur notre serveur ; les messages d'avertissement d'un autre sous-ensemble de classes sont enregistrés dans un fichier sur le lecteur réseau A ; et enfin tous les messages de partout sont enregistrés dans un fichier sur le lecteur réseau B" ? Et vous voyez-vous en train de le modifier tous les deux jours ?

Si vous pouvez répondre oui à l'une des questions ci-dessus, optez pour Log4j. Si vous répondez par un non catégorique à toutes ces questions, JUL sera plus qu'adéquat et il est commodément déjà inclus dans le SDK.

Cela dit, presque tous les projets actuels semblent finir par inclure log4j, ne serait-ce que parce qu'une autre bibliothèque l'utilise.

45voto

bmatthews68 Points 4973

Je vous recommande d'utiliser le Facade de journalisation simple pour Java (SLF4J). Il prend en charge différents fournisseurs qui incluent Log4J et peut être utilisé en remplacement de Apache Commons Logging.

23voto

Rydell Points 2079

Log4j existe depuis longtemps et fonctionne très bien. Je n'ai pas d'étude scientifique pour le prouver, mais d'après ce que j'ai vu chez un grand nombre de clients, c'est facilement le cadre de journalisation que je vois utilisé le plus souvent. Il existe depuis longtemps et n'a pas été remplacé par le prochain grand cadre de journalisation, ce qui n'est pas peu dire.

Il est très simple à mettre en place, et facile d'apprendre les appenders de base (sorties). Il y a toute une série d'appenders qui sont disponibles, y compris :

  1. ConsoleAppender
  2. DailyRollingFileAppender
  3. ExternallyRolledFileAppender
  4. FileAppender
  5. JDBCAppender
  6. JMSAppender
  7. NTEventLogAppender
  8. RollingFileAppender
  9. SMTPAppender
  10. SocketAppender
  11. SyslogAppender
  12. TelnetAppender
  13. WriterAppender

Et d'autres encore. Il n'est pas non plus difficile d'écrire votre propre appender. De plus, il y a une grande flexibilité dans chacun des appenders qui vous permet de contrôler spécifiquement ce qui est affiché dans votre journal.

Une note, j'ai eu une série de problèmes de classloader lorsque j'ai utilisé apache commons logging en plus de log4j. C'était seulement pour une application spécifique, mais j'ai trouvé plus simple d'utiliser log4j seul, plutôt que d'avoir la flexibilité offerte par l'utilisation d'une couche d'abstraction comme commons logging.

Voir cet article pour plus de détails :

Bonne chance !

18voto

adam Points 10572

Java.util.logging offre un paquet complet de journalisation sans les bagages excessifs que certains autres fournissent

7voto

Will Sargent Points 2147

Log4j est un package beaucoup plus agréable dans l'ensemble, et n'a pas certains des problèmes que java.util.logging contient. J'ajouterais que l'utilisation directe de log4j est plus facile que l'utilisation de commons logging.

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