2012-03-15 14 views
24

Quiero examinar qué declaraciones de SQL son generadas por Ebean para descubrir por qué ocurren ciertas excepciones (relacionadas con la sintaxis SQL) en mi aplicación Play 2.0. ¿Hay alguna forma de registrar las sentencias SQL generadas por Ebean en Play Framework 2.0?Juego Framework 2.0 y registro de Ebean SQL

En Play 1.x, hay una opción de configuración jpa.debugSQL, que si se establece en verdadero, hará exactamente esto. ¿Existe una configuración similar para Ebean para Play 2.0? El documentation page about Ebean of Play 2.0 aún es un poco escaso.


Lo que he intentado hasta ahora:

me han añadido estas llamadas de método en mis controladores y los onStart/onRequest métodos del objeto global, pero no tiene ningún efecto:

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

que han modificado los niveles de registro de application.conf, pero no sirvió de nada, ya sea (incluso con nivel de registro TRACE).

Respuesta

53

Lo sentimos llegar tarde a la fiesta, pero yo uso esto en el desarrollo:

db.default.logStatements=true 

logger.com.jolbox=DEBUG 

agregar esas dos líneas a la application.conf y que son buenos para ir.

Emite todos los enunciados sql. Espero eso ayude.

+0

¡Agradable, funciona! –

+0

gracias que funcionó para mí también! – David

4

Puede habilitar el registro de SQL mediante la siguiente declaración

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

Use este comando en el interceptor onRequest por ejemplo

En una próxima versión, que sin duda será capaz de configurar esto en el archivo ebean.properties.

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

Gracias. Intenté tu sugerencia (agregué la declaración anterior a los métodos 'onStart' y' onRequest' en mi objeto Global), pero todavía no veo ninguna declaración SQL en los registros de mi aplicación. – Tommi

+0

No lo he intentado en Play2.0 final, volveré a intentarlo pronto (RC3 última prueba). Intente cambiar el nivel de registro en la aplicación.conf o en la instancia de AdminLogging. ¿Usas "por defecto" como fuente de la base de datos? –

+0

Sí, fuente de datos "predeterminada". Intenté establecer el nivel de registro en application.conf y en la instancia de AdminLogging. Muchas otras cosas aparecen en los registros, pero desafortunadamente, no hay declaraciones SQL, incluso con el nivel de registro 'TRACE'. – Tommi

0

También puede obtener SQL en el acto utilizando el método getGeneratedSQL. Ejemplo de código a continuación

 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()); 
Cuestiones relacionadas