休止状態ステートメントのログを作成しようとしています。 Hibernate 2.0が永続性プロバイダーであるJPAを使用してsqlステートメントを実行します(アプリケーションサーバーはJBoss AS 6.0です)。 EJB 3.0が提供するEntityManagerインターフェースを使用してCRUDメソッドを呼び出します。 hinernateロギングの有効化に関する多くの投稿を読みましたが、実際にはログが表示されません:-( log4j.propertiesファイルを作成し、Netbeansプロジェクトのルートフォルダーに配置します。私のlog4j.propertiesは次のとおりです。
### 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
ログ情報が表示されないのはなぜですか? sql where句またはinsertステートメントで値を確認したい(実際にはいくつかの '?'のみが表示されます)事前に感謝します。
明確にするために、プロジェクトのフォルダー構造の下に配置します。
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
Hibernateログは、Hibernate構成でも有効にする必要があります。
行を追加
hibernate.show_sql=true
hibernate.format_sql=true
どちらかに
server\default\deployers\ejb3.deployer\META-INF\jpa-deployers-jboss-beans.xml
またはアプリケーションのpersistence.xml
in <persistence-unit><properties>
タグ。
とにかく、休止状態のログには、実際の準備されたステートメントのパラメーターに関する情報は(有用な形式で)含まれません。
あらゆる種類のSQLロギングに log4jdbc を使用する代替方法があります。
上記の答えは、IDEではなくJBossでhibernateを使用するコードを実行することを前提としています。この場合、ローカルIDEクラスパスではなく、server\default\deploy\jboss-logging.xmlのJBossでロギングを設定する必要があります。
JBoss 6はデフォルトでlog4jを使用しないことに注意してください。そのため、log4j.propertiesをearに追加しても役に立ちません。 jboss-logging.xmlに追加してみてください:
<logger category="org.hibernate">
<level name="DEBUG"/>
</logger>
次に、ルートロガーのしきい値を変更します。 SLF4J logger.debug()がJBoss 6に記録されない を参照してください。
IDE(展開なし)から直接hibernateクエリをデバッグする場合、クラスパスにlog4j.properties、log4j、slf4j-api、slf4j-log4j12 jarが必要です。 を参照してください。 http://www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/ 。
私は自分自身に答えます。 Vadzimで提案されているように、jboss-logging.xmlファイルを検討し、次の行を挿入する必要があります。
<logger category="org.hibernate">
<level name="TRACE"/>
</logger>
DEBUGレベルの代わりに、TRACEを作成しました。コンソールだけを見るのではなく、server.logファイルを開きます(デバッグメッセージはコンソールに送信されませんが、このモードを構成できます!)。
Log4j.propertiesファイルは、capitolo2.earのルートレベルにある必要があります(META-INFにはありません)。
MyProject
¦ build.xml
¦
+---build
¦ ¦ capitolo2-ejb.jar
¦ ¦ capitolo2-war.war
¦ ¦ JBoss4.dpf
¦ ¦ log4j.properties
Tomcat-8.5 + restlet-2.3.4 + hibernate-4.2.0 + log4j-1.2.14 Java 8アプリをdockerのAlpineLinuxで実行しています。
これらの2行を/usr/local/Tomcat/webapps/ROOT/WEB-INF/classes/log4j.propertiesに追加すると、ログにHQLクエリが表示され始めました。
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=debug
ただし、JDBCバインドパラメーターはログに記録されません。