Aggiornamento 2019:log4jdbc non è stato mantenuto dal 2015. p6spy sembra ancora essere mantenuto attivamente.
Risposta originale
Ci sono molti framework Spy disponibili per questo scopo, controlla log4jdbc, ho capito che questo è quello che stai cercando.
Caratteristiche
- Pieno supporto per JDBC 3 e JDBC 4!
- Facile da configurare, nella maggior parte dei casi tutto ciò che devi fare è cambiare il nome della classe del driver tonet.sf.log4jdbc.DriverSpy e anteporre "jdbc:log4" al tuo URL jdbc esistente, impostare le tue categorie di registrazione e sei pronto per andare!
- Nell'output registrato, per le istruzioni preparate, gli argomenti di collegamento vengono inseriti automaticamente nell'output SQL. Ciò migliora notevolmente la leggibilità e il debug per molti casi.
- Le informazioni sui tempi SQL possono essere generate per aiutare a identificare quanto tempo impiegano le istruzioni SQL per essere eseguite, aiutando a identificare le istruzioni che funzionano troppo lentamente e questi dati possono essere post-elaborati con uno strumento incluso per produrre dati di report di profiling per identificare rapidamente SQL lento nel tuo applicazione.
- Le informazioni sul numero di connessione SQL vengono generate per aiutare a identificare il pool di connessioni oi problemi di threading. Funziona con qualsiasi driver JDBC sottostante, con JDK 1.4 e versioni successive e SLF4J 1.x.
- Software open source, concesso in licenza con la licenza business friendly Apache 2.0
Utilizzo
- Inserisci il jar log4jdbc (basato sulla versione JDK) nel percorso di classe della tua applicazione.
- scegli il sistema di registrazione da usare, log4j, logback, commons logging..ecc sono supportati
- Imposta la classe del driver JDBC su net.sf.log4jdbc.DriverSpy nella configurazione dell'applicazione. Il driver sottostante che viene spiato in molti casi verrà caricato automaticamente senza alcuna configurazione aggiuntiva.
-
Anteponi jdbc:log4 al normale URL jdbc che stai utilizzando.
Ad esempio, se il tuo normale URL jdbc isjdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabasethen dovresti cambiarlo in:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/database/MyDatabase
-
Configura i tuoi logger.
jdbc.sqlonly :registra solo SQL. L'SQL eseguito all'interno di un'istruzione preparata viene automaticamente mostrato con i suoi argomenti di collegamento sostituiti con i dati associati in quella posizione, per una leggibilità notevolmente maggiore. 1.0
jdbc.sqltime :registra l'SQL, dopo l'esecuzione, comprese le statistiche di temporizzazione sul tempo impiegato dall'SQL per l'esecuzione. 1.0
jdbc.audit :registra TUTTE le chiamate JDBC tranne ResultSets. Questo è un output molto voluminoso e normalmente non è necessario a meno che non si riesca a rintracciare un problema JDBC specifico. 1.0
jdbc.resultset :ancora più voluminoso, perché tutte le chiamate agli oggetti ResultSet vengono registrate. 1.0
connessione jdbc :registra gli eventi di apertura e chiusura della connessione, nonché il dump di tutti i numeri di connessione aperta. Questo è molto utile per dare la caccia ai problemi di perdita di connessione.