Abilita registrazione Hibernate

Sto cercando di creare un registro delle dichiarazioni di ibernazione. Eseguo le mie istruzioni SQL utilizzando JPA in cui Hibernate 2.0 è il provider di persistenza (il mio server delle applicazioni è JBoss AS 6.0). Chiamo i miei metodi CRUD usando l’interfaccia EntityManager fornita da EJB 3.0. Ho letto molti post sull’triggerszione della registrazione hinernate ma in realtà non riesco a vedere alcun registro 🙁 Creo un file log4j.properties e lo metto nella cartella principale del mio progetto Netbeans. Metto anche la libreria log4j nel classpath del progetto. Il mio log4j.properties è il seguente:

### 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 

Perché non riesco a vedere le informazioni del registro? Mi piacerebbe vedere i valori in sql dove clausole o in istruzioni di inserimento (in realtà vedo solo un po ‘?) Grazie in anticipo.

Per chiarezza ho messo sotto la struttura delle cartelle del mio progetto:

 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 ¦ ¦ +---classs ¦ ¦ ¦ ¦ .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 ¦ ¦ ¦ ¦ ¦ +---classs ¦ ¦ ¦ .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 registrazione di ibernazione deve essere abilitata anche nella configurazione di ibernazione.

Aggiungi linee

 hibernate.show_sql=true hibernate.format_sql=true 

o a

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

o al persistence.xml dell’applicazione nel .

In ogni caso la registrazione in ibernazione non includerà (in forma utile) informazioni sui parametri delle dichiarazioni preparate.

Esiste un modo alternativo di utilizzare log4jdbc per qualsiasi tipo di registrazione sql.

La risposta sopra presuppone che si esegua il codice che utilizza la sospensione su JBoss, non in IDE. In questo caso è necessario configurare la registrazione anche su JBoss nel server \ default \ deploy \ jboss-logging.xml, non nel classpath IDE locale.

Si noti che JBoss 6 non utilizza log4j per impostazione predefinita. Quindi aggiungere log4j.properties all’orecchio non aiuterà. Prova ad aggiungere a jboss-logging.xml:

     

Quindi modificare la soglia per il logger root. Vedi SLF4J logger.debug () non viene loggato in JBoss 6 .

Se riesci a eseguire il debug delle query di ibernazione direttamente da IDE (senza distribuzione), devi avere log4j.properties, log4j, slf4j-api e slf4j-log4j12 su classpath. Vedi http://www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/ .

Rispondo a me stesso Come suggerito da Vadzim, devo prendere in considerazione il file jboss-logging.xml e inserire queste righe:

    

Invece di livello DEBUG ho scritto TRACE. Ora non guardare solo la console ma aprire il file server.log (i messaggi di debug non vengono inviati alla console ma è ansible configurare questa modalità!).

Il file log4j.properties deve trovarsi al livello root del tuo capitolo2.ear (non in META-INF), ovvero, qui:

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

Abbiamo un’applicazione tomcat-8.5 + restlet-2.3.4 + hibernate-4.2.0 + log4j-1.2.14 java 8 in esecuzione su AlpineLinux nella finestra mobile.

Aggiungendo queste 2 linee a /usr/local/tomcat/webapps/ROOT/WEB-INF/classs/log4j.properties, ho iniziato a vedere le query HQL nei registri:

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

Tuttavia, i parametri di collegamento JDBC non vengono registrati.