webentwicklung-frage-antwort-db.com.de

Aktivieren Sie die Hibernate-Protokollierung

Ich versuche, ein Protokoll mit Hibernate-Anweisungen zu erstellen. Ich führe meine SQL-Anweisungen mit JPA aus, wobei Hibernate 2.0 der Persistenzanbieter ist (mein Anwendungsserver ist JBoss AS 6.0). Ich rufe meine CRUD-Methoden mit EntityManager auf Schnittstelle, die von EJB 3.0 bereitgestellt wird ..__ Ich habe viele Beiträge über das Aktivieren der Protokollierung mit Sicherheitsabweichungen gelesen, aber tatsächlich kann ich kein Protokoll sehen: - ( Ich erstelle eine log4j.properties-Datei und stelle sie in das Stammverzeichnis meiner Netbeans project . Ich füge auch die log4j-Bibliothek in den Klassenpfad des Projekts . Meine log4j.properties hat folgende Eigenschaften:

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

Warum kann ich die Protokollinformationen nicht sehen? Ich möchte Werte in SQL-Klauseln oder in Einfügeanweisungen sehen (eigentlich sehe ich nur einige '?') Vielen Dank im Voraus.

Der Übersicht halber stelle ich die Ordnerstruktur meines Projekts unter:

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

Die Ruhezustandsprotokollierung muss auch in der Ruhezustandskonfiguration aktiviert werden.

Zeilen hinzufügen

hibernate.show_sql=true
hibernate.format_sql=true

entweder um zu

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

oder zum persistence.xml der Anwendung im <persistence-unit><properties>-Tag.

In jedem Fall enthält die Protokollierung im Ruhezustand keine Informationen zu den Parametern der vorbereiteten Anweisungen (in nützlicher Form).

Es gibt eine alternative Möglichkeit, log4jdbc für jede Art von SQL-Protokollierung zu verwenden.

Bei der obigen Antwort wird davon ausgegangen, dass Sie den Code ausführen, der den Ruhezustand für JBoss und nicht für IDE verwendet. In diesem Fall sollten Sie die Protokollierung auch für JBoss in Server\default\deploy\jboss-logging.xml und nicht in local IDE classpath.

Beachten Sie, dass JBoss 6 standardmäßig nicht log4j verwendet. Das Hinzufügen von log4j.properties zum Ohr wird also nicht helfen .. Versuchen Sie nur, jboss-logging.xml hinzuzufügen:

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

Dann ändern Sie den Schwellenwert für den Root-Logger. Siehe SLF4J logger.debug () wird nicht in JBoss 6 protokolliert.

Wenn Sie Hibernate-Abfragen direkt aus IDE (ohne Bereitstellung) debuggen können, sollten Sie über die Klassen log4j.properties, log4j, slf4j-api und slf4j-log4j12 im Klassenpfad ..__ verfügen. Siehe http: // www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/ .

35
Vadzim

Ich antworte mir Wie von Vadzim vorgeschlagen, muss ich die Datei jboss-logging.xml berücksichtigen und folgende Zeilen einfügen:

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

Anstelle des DEBUG-Levels habe ich TRACE ... geschrieben. Jetzt sehen Sie nicht nur die Konsole an, sondern öffnen die Datei server.log (Debug-Nachrichten werden nicht an die Konsole gesendet, Sie können diesen Modus jedoch konfigurieren!).

7
Rosanero4Ever

Ihre Datei log4j.properties sollte sich auf der Stammebene von capitolo2.ear (nicht in META-INF) befinden, dh hier:

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

Wir haben eine Tomcat-8.5 + Restlet-2.3.4 + Hibernate-4.2.0 + log4j-1.2.14 Java 8-App, die auf AlpineLinux im Docker ausgeführt wird.

Nachdem ich diese beiden Zeilen zu /usr/local/Tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties hinzugefügt habe, habe ich die HQL-Abfragen in den Protokollen angezeigt:

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

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

Die JDBC-Bindeparameter werden jedoch nicht protokolliert.

0
user674669