読者です 読者をやめる 読者になる 読者になる

Play Framework 2.1とScalikeJDBCを使用時にSQLログ出力で嵌まった

play20の頃から使用している ScalikeJDBC ですが、とてもお世話になっているライブラリです。ドキュメントも豊富で安心感があります。このscalikejdbcの長所として、安定感があると言うこと以外にSQL実行時のログが詳細に出力されるというものがあります。

(詳細はこちらを参考にしてください。Play FrameworkにRailsらしさを求めている人には重要な機能です!)

さて、この便利なログですが、play21へ変更してから出力できなくて困っていました。いろいろと設定を見直したのですが、該当する箇所など見つからず試行錯誤すること3時間。とりあえず正しい設定かどうかわかりませんがログの出力ができるようになりました。

具体的には

# この設定を書いていなかった…
logger.scalikejdbc=DEBUG

# グローバル設定
scalikejdbc.global.loggingSQLAndTime.enabled=true
scalikejdbc.global.loggingSQLAndTime.logLevel=debug
scalikejdbc.global.loggingSQLAndTime.warningEnabled=true
scalikejdbc.global.loggingSQLAndTime.warningThresholdMillis=5
scalikejdbc.global.loggingSQLAndTime.warningLogLevel=warn

という具合に

logger.scalikejdbc=DEBUG

の1行を記述していないために play run 実行時にログが出力されませんでした。この一行を追加することで無事に出力されるようになりました。

ここに至るまでいろいろと調べたのですが、解決に至る端緒となったのは、play framework本家に記載のある

The root logger configuration affects all log calls, rather than requiring custom logging levels. Additionally, if you want to enable the logging level for a specific library, you can specify it here. For example to enable TRACE log level for Spring, you could add:

logger.org.springframework=TRACE

でした。同じように memcached の設定でも使用していたのでひょっとしてと思い設定を行ったところ、うまく動作するようになりました。(Configuration logging level in application.conf

設定については、公式ガイドに当たる ScalikeJDBC Play Plugin は確認したのですがちょっと見当たりませんでした。この辺みなさんどうされているんでしょうか。

とりあえずうまく動作するようになったので、このまま様子を見たいと思います。