web-dev-qa-db-fra.com

Activer la journalisation Hibernate

J'essaie de créer un journal d'instructions hibernate . J'exécute mes instructions SQL à l'aide de JPA où Hibernate 2.0 est le fournisseur de persistance (mon serveur d'applications est JBoss AS 6.0) . J'appelle mes méthodes CRUD à l'aide de EntityManager. interface fournie par EJB 3.0 . J'ai lu de nombreux articles sur l'activation de la journalisation hinernate mais en réalité, je ne vois aucun journal: - ( Je crée un fichier log4j.properties et je le mets dans le dossier racine de Netbeans project . J'ai également placé la bibliothèque log4j dans le chemin de classe du projet . Mon log4j.properties est le suivant:

### 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{ABSOLUTE} %5p %c{1}:%L – %m%n


log4j.rootLogger=debug, stdout

log4j.logger.org.hibernate=info

 ### log just the SQL
log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=info

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
log4j.logger.org.hibernate.cache=info

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

Pourquoi ne puis-je pas voir les informations du journal? Je voudrais voir les valeurs dans les clauses sql where ou dans les instructions insert (en fait, je ne vois que quelques '?') Merci d'avance.

Par souci de clarté, je mets ci-dessous la structure de dossiers de mon projet:

MyProject
¦   build.xml
¦   log4j.properties
¦
+---build
¦   ¦   capitolo2-ejb.jar
¦   ¦   capitolo2-war.war
¦   ¦   JBoss4.dpf
¦   ¦
¦   +---lib
¦   ¦       log4j-1.2.15.jar
¦   ¦       slf4j-api.jar
¦   ¦       slf4j-jboss-logmanager.jar
¦   ¦
¦   +---META-INF
¦           chapter2-hornetq-jms.xml
¦           jboss-app.xml
¦           log4j.properties
¦           MANIFEST.MF
¦
+---capitolo2-ejb
¦   ¦   build.xml
¦   ¦   
¦   ¦
¦   +---build
¦   ¦   +---classes
¦   ¦   ¦   ¦   .netbeans_automatic_build
¦   ¦   ¦   ¦   .netbeans_update_resources
¦   ¦   ¦   ¦
¦   ¦   ¦   +---ejb
¦   ¦   ¦   ¦   +---com
¦   ¦   ¦   ¦       +---ejb3inaction
¦   ¦   ¦   ¦           +---actionbazaar
¦   ¦   ¦   ¦               +---buslogic
¦   ¦   ¦   ¦               ¦       BillingException.class
¦   ¦   ¦   ¦               ¦       OrderBillingMDB.class
¦   ¦   ¦   ¦               ¦       PlaceBid.class
¦   ¦   ¦   ¦               ¦       PlaceBidBean.class
¦   ¦   ¦   ¦               ¦       PlaceOrder.class
¦   ¦   ¦   ¦               ¦       PlaceOrderBean.class
¦   ¦   ¦   ¦               ¦
¦   ¦   ¦   ¦               +---persistence
¦   ¦   ¦   ¦                       Bid.class
¦   ¦   ¦   ¦                       BillingInfo.class
¦   ¦   ¦   ¦                       Order.class
¦   ¦   ¦   ¦                       OrderStatus.class
¦   ¦   ¦   ¦                       ShippingInfo.class
¦   ¦   ¦   ¦
¦   ¦   ¦   +---META-INF
¦   ¦   ¦           beans.xml
¦   ¦   ¦           jboss.xml
¦   ¦   ¦           MANIFEST.MF
¦   ¦   ¦           persistence.xml
¦   ¦   ¦
¦   ¦   +---empty
¦   ¦   +---generated-sources
¦   ¦       +---ap-source-output
¦   +---dist
¦   ¦       capitolo2-ejb.jar
¦   ¦
¦   +---lib
¦   ¦       log4j-1.2.15.jar
¦   ¦
¦   +---nbproject
¦   ¦   ¦   ant-deploy.xml
¦   ¦   ¦   build-impl.xml
¦   ¦   ¦   genfiles.properties
¦   ¦   ¦   project.properties
¦   ¦   ¦   project.xml
¦   ¦   ¦
¦   ¦   +---private
¦   ¦           private.properties
¦   ¦           private.xml
¦   ¦
¦   +---setup
¦   ¦       jboss-ds.xml
¦   ¦
¦   +---src
¦       +---conf
¦       ¦       beans.xml
¦       ¦       jboss.xml
¦       ¦       MANIFEST.MF
¦       ¦       persistence.xml
¦       ¦
¦       +---Java
¦           +---ejb
¦               +---com
¦                   +---ejb3inaction
¦                       +---actionbazaar
¦                           +---buslogic
¦                           ¦       BillingException.Java
¦                           ¦       OrderBillingMDB.Java
¦                           ¦       PlaceBid.Java
¦                           ¦       PlaceBidBean.Java
¦                           ¦       PlaceOrder.Java
¦                           ¦       PlaceOrderBean.Java
¦                           ¦
¦                           +---persistence
¦                                   Bid.Java
¦                                   BillingInfo.Java
¦                                   Order.Java
¦                                   OrderStatus.Java
¦                                   ShippingInfo.Java
¦
+---capitolo2-war
¦   ¦   build.xml
¦   ¦
¦   +---build
¦   ¦   +---empty
¦   ¦   +---generated-sources
¦   ¦   ¦   +---ap-source-output
¦   ¦   +---lib
¦   ¦   ¦       log4j-1.2.15.jar
¦   ¦   ¦       slf4j-api.jar
¦   ¦   ¦       slf4j-jboss-logmanager.jar
¦   ¦   ¦
¦   ¦   +---web
¦   ¦       ¦   index.jsp
¦   ¦       ¦
¦   ¦       +---META-INF
¦   ¦       ¦       MANIFEST.MF
¦   ¦       ¦
¦   ¦       +---WEB-INF
¦   ¦           ¦   beans.xml
¦   ¦           ¦   jboss-web.xml
¦   ¦           ¦
¦   ¦           +---classes
¦   ¦               ¦   .netbeans_automatic_build
¦   ¦               ¦   .netbeans_update_resources
¦   ¦               ¦
¦   ¦               +---it
¦   ¦                   +---myservlets
¦   ¦                           PlaceBidServlet.class
¦   ¦                           PlaceOrderServlet.class
¦   ¦
¦   +---dist
¦   ¦       capitolo2-war.war
¦   ¦
¦   +---nbproject
¦   ¦   ¦   ant-deploy.xml
¦   ¦   ¦   build-impl.xml
¦   ¦   ¦   genfiles.properties
¦   ¦   ¦   project.properties
¦   ¦   ¦   project.xml
¦   ¦   ¦
¦   ¦   +---private
¦   ¦           private.properties
¦   ¦           private.xml
¦   ¦
¦   +---setup
¦   ¦       jboss-ds.xml
¦   ¦
¦   +---src
¦   ¦   +---conf
¦   ¦   ¦       MANIFEST.MF
¦   ¦   ¦
¦   ¦   +---Java
¦   ¦       +---it
¦   ¦           +---myservlets
¦   ¦                   PlaceBidServlet.Java
¦   ¦                   PlaceOrderServlet.Java
¦   ¦
¦   +---web
¦       ¦   index.jsp
¦       ¦
¦       +---WEB-INF
¦               beans.xml
¦               jboss-web.xml
¦
+---dist
¦       capitolo2.ear
¦
+---nbproject
¦   ¦   ant-deploy.xml
¦   ¦   build-impl.xml
¦   ¦   genfiles.properties
¦   ¦   project.properties
¦   ¦   project.xml
¦   ¦
¦   +---private
¦           private.properties
¦
+---setup
¦       jboss-ds.xml
¦       jboss4-netbeans-destinations-service.xml
¦       log4j.properties
¦
+---src
    +---conf
            chapter2-hornetq-jms.xml
            jboss-app.xml
            log4j.properties
            MANIFEST.MF
21
Rosanero4Ever

La journalisation Hibernate doit également être activée dans la configuration Hibernate.

Ajouter des lignes

hibernate.show_sql=true
hibernate.format_sql=true

soit à

server\default\deployers\ejb3.deployer\META-INF\jpa-deployers-jboss-beans.xml

ou à la balise persistence.xml dans <persistence-unit><properties> de l'application.

Quoi qu'il en soit, la journalisation en veille prolongée n'inclura pas (sous forme utile) d'informations sur les paramètres des instructions préparées.

Il existe un moyen alternatif d’utiliser log4jdbc pour tout type de journalisation SQL.

La réponse ci-dessus suppose que vous exécutez le code qui utilise hibernate sur JBoss, pas dans IDE . Dans ce cas, vous devez également configurer la journalisation sur JBoss dans server\default\deploy\jboss-logging.xml, et non dans local IDE classpath.

Notez que JBoss 6 n'utilise pas log4j par défaut. Donc, ajouter log4j.properties à ear ne vous aidera pas… .. Essayez juste d’ajouter à jboss-logging.xml:

   <logger category="org.hibernate">
     <level name="DEBUG"/>
   </logger>

Puis changez le seuil pour le logger racine. Voir SLF4J logger.debug () n'est pas connecté à JBoss 6 .

Si vous parvenez à déboguer des requêtes d'hibernation directement à partir de IDE (sans déploiement), vous devez disposer des fichiers journaux log4j.properties, log4j, slf4j-api et slf4j-log4j12 sur le chemin d'accès aux classes . Voir http: // www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/ .

35
Vadzim

Je me réponds. Comme suggéré par Vadzim, je dois considérer le fichier jboss-logging.xml et insérer ces lignes:

<logger category="org.hibernate">
     <level name="TRACE"/>
</logger>

Au lieu du niveau DEBUG, j’ai écrit TRACE . Maintenant, ne regardez pas uniquement la console, mais ouvrez le fichier server.log (les messages de débogage ne sont pas envoyés à la console mais vous pouvez configurer ce mode!).

7
Rosanero4Ever

Votre fichier log4j.properties doit se trouver au niveau racine de votre capitolo2.ear (pas dans META-INF), c’est-à-dire ici:

MyProject
¦   build.xml
¦   
+---build
¦   ¦   capitolo2-ejb.jar
¦   ¦   capitolo2-war.war
¦   ¦   JBoss4.dpf
¦   ¦   log4j.properties
1
Nulldevice

Nous avons une application Java 8 pour Tomcat-8.5 + restlet-2.3.4 + hibernate-4.2.0 + log4j-1.2.14 s'exécutant sur AlpineLinux dans docker.

En ajoutant ces 2 lignes à /usr/local/Tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties, j'ai commencé à voir les requêtes HQL dans les journaux:

### log just the SQL
log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=debug

Cependant, les paramètres de liaison JDBC ne sont pas enregistrés.

0
user674669