24

Play 2.0 アプリケーションで特定の例外 (SQL 構文に関連する) が発生している理由を調べるために、Ebean によって生成される SQL ステートメントを調べたいと考えています。Play Framework 2.0 で Ebean によって生成された SQL ステートメントをログに記録する方法はありますか?

Play 1.x には、jpa.debugSQLtrue に設定されている場合、まさにこれを行う構成オプションがあります。Ebean の同様の設定は Play 2.0 に存在しますか? Ebean of Play 2.0 に関するドキュメント ページはまだ少し不足しています。


私がこれまでに試したこと:

これらのメソッド呼び出しをコントローラーとグローバル オブジェクトのonStart/onRequestメソッドに追加しましたが、効果はありません。

Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);
Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(Play.isDev());

からログ レベルを変更しましたapplication.confが、どちらも役に立ちませんでした (ログ レベルでもTRACE)。

4

3 に答える 3

53

パーティーに遅れて申し訳ありませんが、私はこれを開発に使用しています:

db.default.logStatements=true

logger.com.jolbox=DEBUG

この 2 行を application.conf に追加すると、準備完了です。

すべてのSQLステートメントを出力します。それが役に立てば幸い。

于 2012-08-14T15:53:46.637 に答える
4

次のステートメントを使用してSQLログを有効にできます

Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(true);

たとえば、 onRequestインターセプターでこのコマンドを使用します

次のリリースでは、これをファイルebean.propertiesで確実に構成できるようになります。

// Tips : use Play.isDev() to log only in dev mode
于 2012-03-15T12:47:16.137 に答える
0

また、getGeneratedSQL メソッドを使用してその場で SQL を取得することもできます。以下のコードサンプル

        Query<PreventionActivity> where = find.where(
            and(
                    and(
                    ge("Age_FROM", age)
                    , or(le("Age_TO", age), eq("Age_TO", 0))
                    )
                    , or(eq("Gender_CD", genderCd), eq("Gender_CD", "*"))
            )
    );

    List<PreventionActivity> list = where.findList();
    Logger.info("sql ");
    Logger.info(where.getGeneratedSql());
于 2016-08-31T16:20:45.753 に答える