Play Framework 2.0 и ведение журнала Ebean SQL - PullRequest
24 голосов
/ 15 марта 2012

Я хочу изучить, какие операторы SQL генерируются Ebean, чтобы выяснить, почему в моем приложении Play 2.0 возникают определенные исключения (связанные с синтаксисом SQL). Есть ли способ зарегистрировать операторы SQL, сгенерированные Ebean в Play Framework 2.0?

В Play 1.x есть опция конфигурации jpa.debugSQL, которая, если задано значение true,сделаю именно это.Существует ли аналогичная настройка для Ebean для Play 2.0?Страница документации о Ebean of Play 2.0 все еще немного скудна.


Что я пробовал до сих пор:

У меня естьдобавил эти вызовы методов в мои контроллеры и методы onStart / onRequest объекта Global, но это не имеет никакого эффекта:

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

Я изменил уровни журнала с application.conf, но это не помогло (даже с уровнем журнала TRACE).

Ответы [ 3 ]

53 голосов
/ 14 августа 2012

Извините, что опоздал на вечеринку, но я использую это в разработке:

db.default.logStatements=true

logger.com.jolbox=DEBUG

Добавьте эти две строки в application.conf, и все готово.

Этовыводит все операторы sql.Надеюсь, это поможет.

4 голосов
/ 15 марта 2012

Вы можете включить ведение журнала SQL, используя следующую инструкцию

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

Используйте эту команду в перехватчике onRequest , например

В следующем выпуске вы будетенаверняка сможет настроить это в файле ebean.properties .

// Tips : use Play.isDev() to log only in dev mode
0 голосов
/ 31 августа 2016

Также вы можете получить SQL на месте, используя метод getGeneratedSQL.Пример кода ниже

        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());
...