Skip to content

Instantly share code, notes, and snippets.

@asufana
Last active December 14, 2015 03:02
Show Gist options
  • Save asufana/a44d24268ba806e354fe to your computer and use it in GitHub Desktop.
Save asufana/a44d24268ba806e354fe to your computer and use it in GitHub Desktop.
Play1 SQLパタメータのログ出力

Play1 SQLパタメータのログ出力

Playデフォルトログ設定

conf/application.conf 設定

jpa.debugSQL=true

Console ログ

2015-07-05 14:58:25,514 DEBUG insert into comment
(createDate, isDisable, modifyDate, version, remarks, id) values (?, ?, ?, ?, ?, ?)
  • パラメタライズドクエリは ? と表示される

Hibernate設定を追加する

conf/log4j.properties ファイルを作成し、log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder を設定する

log4j.rootLogger=INFO, Console

log4j.logger.play=INFO
log4j.logger.org.hibernate=WARN

# Show sql parameters for play logger
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace

# Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p %m%n

Console ログ

2015-07-05 15:12:27,880 DEBUG insert into comment
(createDate, isDisable, modifyDate, version, remarks, id) values (?, ?, ?, ?, ?, ?)
2015-07-05 15:12:27,880 TRACE binding parameter [1] as [TIMESTAMP] - Sun Jul 05 15:12:27 JST 2015
2015-07-05 15:12:27,881 TRACE binding parameter [2] as [INTEGER] - 0
2015-07-05 15:12:27,881 TRACE binding parameter [3] as [TIMESTAMP] - <null>
2015-07-05 15:12:27,881 TRACE binding parameter [4] as [BIGINT] - 0
2015-07-05 15:12:27,881 TRACE binding parameter [5] as [VARCHAR] - コメントです
2015-07-05 15:12:27,881 TRACE binding parameter [6] as [BIGINT] - 3
  • パラメタライズドクエリは binding parameter として表示される

log4jdbcを利用する

Mavenリポジトリに登録がないので、https://code.google.com/p/log4jdbc/ から log4jdbc4-1.2.jar をダウンロードして、Playプロジェクトの lib フォルダに配置する

  • play ec を忘れずに

conf/application.conf 設定

# jdbcドライバとurl設定をlog4jdbcに差し替える
#db.url=jdbc:postgresql://127.0.0.1:5432/SampleProject
 db.url=jdbc:log4jdbc:postgresql://127.0.0.1:5432/SampleProject
#db.driver=org.postgresql.Driver
 db.driver=net.sf.log4jdbc.DriverSpy

# SQLログが重複するので無効化しておく
jpa.debugSQL=false

conf/log4j.properties 設定

log4j.rootLogger=INFO, Console

log4j.logger.play=INFO
log4j.logger.org.hibernate=WARN

# Show sql parameters for play logger
#log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace

# Show sql parameters for log4jdbc
# sample: https://code.google.com/p/log4jdbc/source/browse/doc/log4j.properties
log4j.logger.jdbc=FATAL
log4j.logger.jdbc.sqltiming=INFO

# Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p %m%n

Console ログ

2015-07-05 15:31:43,376 INFO batching 1 statements: 1:
insert into comment(createDate, isDisable, modifyDate, version, remarks, id)
values ('07/05/2015 15:31:43.320', 0, NULL, 0, 'コメントです', 1)
 {executed in 1 msec}
  • パラメータがインラインで表示される、また処理にかかった時間も表示される

ちなみに log4jdbc-log4j2, log4jdbc-remix は、log4jdbcの後継だが、Play1では上手く動作しなかった。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment