[Play][DB]発行されたクエリをコンソールに出力する

 Play frameworkのロガーにはLog4jが使用されていますので、ログを簡単に出力することができます(Javaなら「play.Logger.*」を、Scalaなら「play.api._」をインポートするとつかえるようになります)。Anorm等で発行されたクエリをコンソール上に表示できるような設定を紹介したいと思います。クエリの確認にいちいちSqlQueryクラスのqueryメソッド等を利用しなくて済むので便利です。

 環境はPlay framework 2.1.0です。

 Logger.info等のメソッドの場合、デフォルトでコンソールに表示されるようになっています。ここでは発行されたクエリをコンソール上に表示する方法を紹介します。まず、「application.conf」に以下の行を追加します。

db.default.logStatements=true

 これでDBのデバッグ出力が有効になります。さらに、以下の行をコメントアウトして、logbackの設定を無効化します。

# Logger
# ~~~~~
# You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory .

# Root logger:
# logger.root=ERROR

# Logger used by the framework:
# logger.play=INFO

# Logger provided to your application:
# logger.application=DEBUG

 上記の設定は「application.conf」の一番下にあるはずです。

 次に、「conf」フォルダに「logger.xml」というXMLファイルを生成し、以下のXMLを記述して保存してください。

<configuration>
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
   <pattern>%-5level - %msg%n</pattern>
  </encoder>
 </appender>
 <logger name="com.jolbox.bonecp" level="DEBUG">
  <appender-ref ref="STDOUT" />
 </logger>
 <logger name="play" level="DEBUG">
  <appender-ref ref="STDOUT" />
 </logger>
 <logger name="application" level="DEBUG">
  <appender-ref ref="STDOUT" />
 </logger>
</configuration>

 encoder要素が実際に出力されるログのフォーマットです。

 あとはplayコンソール上で「reload」コマンドを実行し、プロジェクトを再読み込みするとロギングが有効になります。クエリが発行されるとコンソール上に発行されたクエリが出力されます。便利!

0 件のコメント :

コメントを投稿