Actualización de 2019:log4jdbc no se ha mantenido desde 2015. p6spy todavía parece estar activamente mantenido.
Respuesta original
Hay muchos marcos espía disponibles para este propósito, consulte log4jdbc, creo que esto es lo que está buscando.
Características
- ¡Soporte total para JDBC 3 y JDBC 4!
- Fácil de configurar, en la mayoría de los casos, todo lo que necesita hacer es cambiar el nombre de clase del controlador tonet.sf.log4jdbc.DriverSpy y anteponer "jdbc:log4" a su URL de jdbc existente, configurar sus categorías de registro y estará listo para ¡Vamos!
- En la salida registrada, para declaraciones preparadas, los argumentos de vinculación se insertan automáticamente en la salida SQL. Esto mejora enormemente la legibilidad y la depuración en muchos casos.
- Se puede generar información de temporización de SQL para ayudar a identificar cuánto tardan en ejecutarse las declaraciones de SQL, lo que ayuda a identificar las declaraciones que se ejecutan con demasiada lentitud y estos datos se pueden procesar posteriormente con una herramienta incluida para producir datos de informes de perfiles para identificar rápidamente SQL lento en su aplicación.
- La información del número de conexión de SQL se genera para ayudar a identificar problemas de subprocesamiento o agrupación de conexiones. Funciona con cualquier controlador JDBC subyacente, con JDK 1.4 y superior, y SLF4J 1.x.
- Software de código abierto, con licencia comercial Apache 2.0
Uso
- Coloque el archivo jar log4jdbc (basado en la versión de JDK) en el classpath de su aplicación.
- elija el sistema de registro a utilizar, log4j, logback, commons logging..etc son compatibles
- Establezca su clase de controlador JDBC en net.sf.log4jdbc.DriverSpy en la configuración de su aplicación. El controlador subyacente que se está espiando en muchos casos se cargará automáticamente sin ninguna configuración adicional.
-
Anteponga jdbc:log4 a la URL normal de jdbc que está utilizando.
Por ejemplo, si su url jdbc normal es jdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabase, entonces la cambiaría a:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/databases/MyDatabase
-
Configure sus registradores.
jdbc.sqlonly :registra solo SQL. El SQL ejecutado dentro de una declaración preparada se muestra automáticamente con sus argumentos de enlace reemplazados con los datos enlazados en esa posición, para una legibilidad mucho mayor. 1.0
jdbc.sqltiming :registra el SQL, después de la ejecución, incluidas las estadísticas de tiempo sobre cuánto tardó en ejecutarse el SQL. 1.0
jdbc.auditoría :registra TODAS las llamadas JDBC excepto ResultSets. Esta es una salida muy voluminosa y normalmente no se necesita a menos que se rastree un problema específico de JDBC. 1.0
jdbc.conjunto de resultados :Aún más voluminoso, porque se registran todas las llamadas a los objetos ResultSet. 1.0
jdbc.conexión :registra los eventos de apertura y cierre de la conexión, así como el volcado de todos los números de conexión abiertos. Esto es muy útil para detectar problemas de fugas en la conexión.