16

以下のようにlog4j.propertiesファイルを作成しました。

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE

hibernate.cfg.xml誰かがそれをファイルに含める方法を手伝ってくれますか? 申し訳ありませんが、実際にはlog4jの仕組みがわかりません。value代わりに休止状態のクエリを表示するためにこれを作成します?が、それでも?何も変更が表示されないので、さらに先に進む必要がありますか?

ここから参照しましたHibernate show real SQL

4

8 に答える 8

13

hibernate.cfg.xml の「show_sql」プロパティにより、クエリがコンソールに直接出力されます。

Log4j を使用すると、出力をコンソールからファイル、ネットワーク ポート、データベースのどこにでも記録できます。しかし、あなたが持っている単純な構成は、コンソールにも出力されるはずです。したがって、最初に show_sql プロパティを削除して、Log4j がコンソールに何かを表示するかどうかを確認してください。

これが機能しない場合は、Log4j が正しく構成されていないことを示しています。hibernate > 3.5 を使用している場合、デフォルトで log4j の代わりに logback を使用する slf4j API が使用されます。クラスパスから logback jar を削除し、代わりに slf4j-log4j12.jar と log4j.jar を追加することで、簡単に log4j に切り替えることができます。

Log4j トレースは、'?' を使用してクエリも出力しますが、パラメータ バインディングも出力します。データベース ドライバまたはサーバーによって置き換えられます。

于 2013-10-01T11:41:09.937 に答える
3

バージョンごとに休止状態のリファレンスを参照してください。ここに3.3リンクがあります

編集 :-

  1. ロギングをセットアップするには、クラスパスに slf4j-api.jar と、優先バインディング用の jar ファイル (Log4J の場合は slf4j-log4j12.jar) が必要です。
  2. log4j.properties ファイルをクラスパスに配置します。プロパティ ファイルの例は、Hibernate とともに src/ ディレクトリに配布されています。
  3. 次のログ 4j カテゴリを有効にします。

    org.hibernate.SQL   Log all SQL DML statements as they are executed
    
    org.hibernate.type  Log all JDBC parameters
    
于 2013-10-07T07:24:32.460 に答える
2

log4j.propertiesほとんどの場合、アプリケーションのクラスパスに含めるだけで十分です。

log4jを適切に初期化する方法を参照してください。.

問題のリンクは、次のような個別のログステートメントで、SQLテキストにないバインドされたSQLパラメーター値を探す必要があることを 既に示唆TRACE [BasicBinder] binding parameter [1] as [VARCHAR] - john doeしています: .

しかし、log4jdbcに固執することをお勧めします。使い方はとても簡単です。また、印刷された SQL テキストでクエリ パラメータ値をインライン化することもできます。

于 2013-10-01T13:32:32.690 に答える
0

値をインラインで出力することはできません。Hibernate は常に ? を出力します。クエリをログに記録するとき。DEBUG レベルでの org.hibernate.type ロギングの出力は、これらの疑問符を置き換えるために使用される値とタイプを示しています。

于 2013-10-06T20:01:41.330 に答える
0

hibernate.cfg.xml を追加する必要はありません。クラスパスに配置して、このリンクに記載されている手順に従ってください。このリンクを参照してください:- http://makecodeeasy.blogspot.in/2013/03/logger-in-spring-web-application.html

于 2013-10-04T08:04:26.423 に答える
0

jdbcdslog のプロキシを使用した SQL ロギングは、休止状態のロギングよりもはるかに好きです。

データベースと通信するログ SQL

于 2013-10-07T06:32:18.247 に答える
0

私の場合、それは hibernate.cfg.xmlではなく、@jdev によって与えられたコードを配置したlog4j.xmlファイルでした

< property name="show_sql"> true SQL クエリを表示します

< property name="format_sql"> true コンソールに表示されるクエリをフォーマットします

< property name="use_sql_comments"> true コメントがクエリに追加されます

プロジェクトで何千ものクエリがコンソールに出力されている場合は、その他を false にします: < property name="show_sql"> true < property name="format_sql"> false < property name="use_sql_comments"> false

または、ここで指定されている別のテキスト ファイルにすべての SQL クエリを書き込むためだけに、プロジェクトで行った log4j.xml にアペンダーを書き込み ます

于 2016-04-13T04:58:38.413 に答える