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
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/ .
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!).
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
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.