0

JPAのプロジェクトがあります。私のログは次のようになります。

Hibernate: insert into TEST(DESCRIPTION, NAME, version, id) values (?, ?, ?, ?)
[08/12/14 06:26:26:026 GET] TRACE sql.BasicBinder: binding parameter [1] as [VARCHAR] - [desc]
[08/12/14 06:26:26:026 GET] TRACE sql.BasicBinder: binding parameter [2] as [VARCHAR] - [name]
[08/12/14 06:26:26:026 GET] TRACE sql.BasicBinder: binding parameter [3] as [INTEGER] - [0]
[08/12/14 06:26:26:026 GET] TRACE sql.BasicBinder: binding parameter [4] as [BIGINT] - [21]

log4j 構成にorg.hibernate.typeの痕跡があります。それはいいことですが、このタイプの出力を書く方法はありますか?

Hibernate: insert into TEST(DESCRIPTION, NAME, version, id) values (desc, name, 0, 21)

私はグーグルでそれを検索していましたが、このタイプの解決策を見つけることができません。この出力は読みやすく、ログ ファイルも読みやすいように見えます。なぜこれにはhibenrateがないのですか?

私の構成はそのようなものです:

<category name="org.hibernate.type">
    <priority value="trace" />
</category>
4

2 に答える 2

2

これがHibernateの箱から出してすぐに可能になるとは思えません。アプリケーションによって作成された接続、ステートメント、およびプリペアド ステートメントを (デコレーター デザイン パターンを使用して) 明示的にプロキシし、渡されたパラメーターをログに記録することができます。

于 2014-12-09T06:07:49.740 に答える
0

slf4j + Log4j を使用

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version> <!-- Use the latest version instead -->
    </dependency>

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

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Log everything. Good for troubleshooting
log4j.logger.org.hibernate=INFO

# Log all JDBC parameters
log4j.logger.org.hibernate.type=ALL

hibernate.cfg.xml

<property name="show_sql">true</property>

これで、パラメーターがログに記録されます。

于 2015-09-03T09:46:58.423 に答える