2012-03-15 12 views
24

Chcę sprawdzić, jakie instrukcje SQL są generowane przez Ebean, aby dowiedzieć się, dlaczego pewne wyjątki (związane ze składnią SQL) występują w mojej aplikacji Play 2.0. Czy istnieje sposób rejestrowania instrukcji SQL wygenerowanych przez Ebean w programie Play Framework 2.0?Rejestrowanie w programie Microsoft Framework 2.0 i Ebean SQL

W Play 1.x dostępna jest opcja konfiguracji jpa.debugSQL, która po ustawieniu wartości true spowoduje wykonanie tej czynności. Czy dla Play 2.0 istnieje podobne ustawienie dla Ebean? The documentation page about Ebean of Play 2.0 jest nadal trochę brakuje.


Co próbowałem dotąd:

Dodałem te wywołania metody w moim kontrolerów i onStart/onRequest metody globalnego obiektu, ale to nie ma żadnego wpływu:

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

mam zmodyfikowany poziomu dziennika z application.conf, ale to nie pomogło (nawet z poziomu dziennika TRACE).

Odpowiedz

53

Niestety za późno do partii, ale to wykorzystać w rozwoju:

db.default.logStatements=true 

logger.com.jolbox=DEBUG 

Dodaj te dwie linie do application.conf i jesteś dobry, aby przejść.

Wyprowadza wszystkie instrukcje sql. Mam nadzieję, że to pomoże.

+0

Dobrze, działa! –

+0

dziękuję, że pracował dla mnie też! – David

4

Można włączyć rejestrowanie SQL za pomocą następującego komunikatu

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

użyć tego polecenia w onRequest kolektora np

W następnym wydaniu, na pewno będzie w stanie skonfigurować to w pliku ebean.properties.

// Tips : use Play.isDev() to log only in dev mode 
+0

Dzięki. Wypróbowałem twoją sugestię (dodałem powyższą instrukcję do obu metod "onStart" i "onRequest" w moim obiekcie globalnym), ale nadal nie widzę żadnych instrukcji SQL w dziennikach mojej aplikacji. – Tommi

+0

Nie próbowałem finału Play2.0, wkrótce spróbuję ponownie (ostatni test RC3). Spróbuj zmienić poziom rejestrowania w pliku application.conf lub w instancji AdminLogging. Czy używasz "default" jako źródła bazy danych? –

+0

Tak, "domyślne" źródło danych. Próbowałem ustawić poziom dziennika w instancji application.conf i AdminLogging. Wiele innych rzeczy pojawia się w dziennikach, ale niestety, nie ma instrukcji SQL, nawet z poziomem logu "TRACE". – Tommi

0

Można również uzyskać SQL na miejscu za pomocą metody getGeneratedSQL. Próbka kodu poniżej

 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()); 
Powiązane problemy