2009-06-02 3 views
6

Mon application Web utilise Java, l'implémentation JPA d'Hibernate (EntityManager) et Spring. Quels sont mes choix d'enregistreurs et que recommanderiez-vous. Idéalement, la configuration serait simple (un fichier de configuration pour Hibernate, Spring et mon code).Enregistreur recommandé pour Java, Hibernate et Spring

+0

en double de http://stackoverflow.com/questions/354837/whats-up-with-logging-in-java – Jherico

+0

peut-être ... ce Q est spécifique à Hibernate et Spring –

+0

Hélas, une seule réponse mentionne quoi que ce soit à propos de l'utilisation de la journalisation dans une méthode qui a une pertinence particulière pour Spring et Hibernate. Quoi qu'il en soit, la vraie réponse est «n'importe quelle implémentation de journalisation fera ce que vous voulez car la plupart des bibliothèques comme Spring ou Hibernate consignent l'implémentation indépendamment de l'implémentation». – Jherico

Répondre

13

Lors de la création d'applications à partir de divers cadres, vous devez souvent envelopper les enregistreurs existants, qu'ils soient log4j, JUL ou JULI ou autre. L'application standard pour cela est le Simple Logging Facade for Java (SLF4J). Même si votre application n'a pas besoin de SLF4J maintenant, vous pouvez éventuellement ajouter une bibliothèque qui en a besoin, et c'est votre meilleur espoir pour un fichier de configuration à long terme. Dans cet esprit, vous devriez vous en tenir aux logging packages que SLF4J prend en charge, mais généralement il se résume à java.util.logging (JUL) ou à log4j d'Apache. Cela a été un subject for debate depuis un certain temps et vous pouvez trouver de nombreuses opinions des deux côtés.

Personnellement, je pense qu'il est regrettable que la journalisation Java est en this situation, et je vais utiliser ce qui me donne le moins de mal pour la situation.

7

log4j est l'enregistreur standard que j'utilise. Vous pouvez configurer les niveaux de consignation et consigner les fichiers par paquet de façon à ce que Hibernate, Spring et votre code puissent aller dans leurs propres fichiers journaux.

3

J'utilise le Apache Commons Logging api, avec un fichier de configuration log4j (le fichier de configuration de log4j est simple, facile pour un novice à comprendre et a de nombreux exemples pour travailler.

Je préfère utiliser les communes API d'exploitation forestière parce que son Il peut être configuré via des formats de fichier pour n'importe quel nombre de paquets de journalisation populaires

Voici une configuration log4j simple qui affichera les informations de débogage pour vos propres paquets, le niveau INFO pour le printemps et l'hibernation, et WARN pour tout le reste:

# Global logging configuration 
log4j.rootLogger=WARN, stdout 
log4j.category.org.mydomain.org=DEBUG 
log4j.category.org.hibernate=INFO 
log4j.category.org.springframework=INFO 


# CONSOLE appender not used by default 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %c - %m%n 
5

Personne n'a jamais été renvoyé pour avoir choisi log4j.

Consultez également slf4j.

4

Hibernate s'appuie déjà sur SLF4J. À moins de me tromper, la version actuelle de Spring repose sur la journalisation des communs, mais la prochaine version utilisera aussi SLF4J. De toute façon, vous pouvez consolidate all logging through SLF4J (voir la section sur jcl-over-slf4j.jar). Une fois cela fait, vous pouvez choisir java.util.logging, log4j ou logback en tant que framework de journalisation sous-jacent.

Questions connexes