0

2 つのログ ファイルを生成する方法。show-sql = true プロパティによって生成された Hibernate sql メッセージをログに記録します。もう 1 つは残りの Hibernate ログを記録します。

以下に示すように、logback.xml を構成しました。

<logger name="org.hibernate" level="debug" additivity="false">
    <appender-ref ref="hibernate" />
</logger>

<logger name="org.hibernate.SQL" additivity="false">
    <appender-ref ref="hibernate-sql" />
</logger>

予想どおり 2 つのログ ファイルが生成されます。ただし、Tomcat コンソール、hibernate アペンダー、および hibernate-sql アペンダーで hibernate-sql ログ メッセージを複製しています。

hibernate-sql アペンダーのみで Hibernate sql ログを生成するように logback を制限するにはどうすればよいですか?

4

1 に答える 1

3

Hibernate は、生成された SQL を 2 つの異なる完全に異なる方法で書き込みます。プロパティ hibernate.show_sql を true に設定すると、生成された SQL を stdout に書き込むように Hibernate に指示します。これには、ロギング フレームワークは一切関与しません。そのため、ほとんど使用しないでください。構成からそのプロパティを削除するだけで、Tomcat コンソールの SQL がなくなります。

Hibernate が SQL を書き込む 2 番目の方法であり、使用すべき方法は、org.hibernate.SQL ロギング カテゴリの下でログ フレームワークに送信することです。hibernate.show_sql とはまったく関係がありません。

ご存じないかもしれませんが、Hibernate は org.hibernate.type カテゴリを使用して、準備されたステートメントのパラメーターにバインドされたすべての値もログに記録します。これは hibernate.show_sql では得られないものであるため、show_sql の代わりに Hibernate のロギングを使用すると、より柔軟で有益になります。

于 2012-12-30T09:11:26.803 に答える