以下のようなcreartelog4j.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
Hibernate.cfg.xmlの「show_sql」プロパティにより、クエリが直接コンソールに出力されます。
Log4jを使用すると、コンソール、ファイル、ネットワークポート、データベースなど、どこにでも出力を記録できます。しかし、あなたが持っている単純な構成は、コンソールにも印刷することになっています。したがって、まずshow_sqlプロパティを削除して、Log4jがコンソールに何かを表示するかどうかを確認します。
これが機能しない場合は、Log4jが正しく構成されていないことを示しています。 hibernate> 3.5を使用している場合は、slf4j apiを使用します。これは、デフォルトでlog4jではなくlogbackを使用します。クラスパスからlogback jarを削除し、代わりにslf4j-log4j12.jarとlog4j.jarを追加することで、簡単にlog4jに切り替えることができます。
Log4jトレースでは、「?」を使用してクエリも出力されますが、パラメータバインディング、つまり「?」データベースドライバまたはサーバーに置き換えられます。
バージョンごとにhibernateリファレンスを参照してください。こちらが3.3 Link
編集:-
次のログ4jカテゴリを有効にします。
org.hibernate.SQL Log all SQL DML statements as they are executed org.hibernate.type Log all JDBC parameters
ほとんどの場合、アプリケーションのクラスパスにlog4j.properties
を含めることで十分です。
log4jを適切に初期化する方法は? を参照してください。
問題のリンクはすでに suggests であり、次のような個別のログステートメントでsqlテキストではなく、バインドされたsql param値を探す必要があります:TRACE [BasicBinder] binding parameter [1] as [VARCHAR] - john doe
。
しかし、私は log4jdbc を使用することをお勧めします。使い方はいたって簡単です。そして、それは印刷されたSQLテキストでクエリparam値をインライン化することができます。
これも追加
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
あなたの問題は修正されます。
値をインラインで印刷することはできません。 Hibernateは常に?クエリを記録するとき。 DEBUGレベルでのorg.hibernate.typeロギングの出力は、それらの疑問符を置き換えるために使用される値とタイプを示します。
Hibernate.cfg.xmlを追加する必要はありません。クラスパスに配置して、このリンクに記載されている手順に従ってください。このリンクを参照してください:- http://makecodeeasy.blogspot.in/2013/03/logger-in-spring-web-application.html
私の場合、はhibernate.cfg.xmlではなく、log4j.xml@jdevで指定されたコードを配置するファイル
<property name = "show_sql">trueSQLクエリを表示します
<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
または、プロジェクトで実行したlog4j.xmlにappenderを書き込みます。ここで指定されている別のテキストファイルにすべてのSQLクエリを書き込みます。 Log4j XML構成ファイルを使用してHibernateロギングを構成しますか?
私はjdbcdslogのプロキシを使用したsqlロギングがhibernateロギングよりもはるかに好きです。