Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enable Hibernate logging

Tags:

I'm trying to create a log of hibernate statements. I perform my sql statements using JPA where Hibernate 2.0 is the persistence provider (my application server is JBoss AS 6.0). I call my CRUD methods using the EntityManager interface provided by EJB 3.0. I read many posts about enabling hinernate logging but actually i can't see any log :-( I create a log4j.properties file and I put it in the root folder of my Netbeans project. I put also log4j library in the classpath of the project. My log4j.properties s the following:

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

Why can't I see the log informations? I would like see values in sql where clauses or in insert statements (actually I see only some '?') Thanks in advance.

For clarity I put below the folder structure of my project:

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 
like image 301
Rosanero4Ever Avatar asked Dec 13 '11 14:12

Rosanero4Ever


People also ask

How do I enable hibernate logging in SQL?

The better way to activate the logging of executed SQL statements is to set the log level of the org. hibernate. SQL category to DEBUG (or the corresponding log level of your log framework).

What is logging in hibernate?

Hibernate utilizes Simple Logging Facade for Java (SLF4J) in order to log various system events. SLF4J can direct your logging output to several logging frameworks (NOP, Simple, log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen binding.

How do I enable hibernate logging in spring boot?

There are two ways to enable hibernate logs in the spring boot application. The JPA spring boot module will allow the logging of the underlying ORM tools. Since hibernate is the default ORM tool used for spring boot, JPA logs will enable hibernate logs.


1 Answers

Hibernate logging has to be also enabled in hibernate configuration.

Add lines

hibernate.show_sql=true hibernate.format_sql=true 

either to

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

or to application's persistence.xml in <persistence-unit><properties> tag.

Anyway hibernate logging won't include (in useful form) info on actual prepared statements' parameters.

There is an alternative way of using log4jdbc for any kind of sql logging.

The above answer assumes that you run the code that uses hibernate on JBoss, not in IDE. In this case you should configure logging also on JBoss in server\default\deploy\jboss-logging.xml, not in local IDE classpath.

Note that JBoss 6 doesn't use log4j by default. So adding log4j.properties to ear won't help. Just try to add to jboss-logging.xml:

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

Then change threshold for root logger. See SLF4J logger.debug() does not get logged in JBoss 6.

If you manage to debug hibernate queries right from IDE (without deployment), then you should have log4j.properties, log4j, slf4j-api and slf4j-log4j12 jars on classpath. See http://www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/.

like image 141
Vadzim Avatar answered Sep 20 '22 23:09

Vadzim