Update 2019:log4jdbc is sinds 2015 niet meer onderhouden. p6spy lijkt nog steeds actief te worden onderhouden.
Oorspronkelijk antwoord
Er zijn veel Spy-frameworks beschikbaar voor dit doel, kijk alstublieft naar log4jdbc, ik dacht dat dit is wat u zoekt.
Functies
- Volledige ondersteuning voor JDBC 3 en JDBC 4!
- Eenvoudig te configureren, in de meeste gevallen hoeft u alleen de naam van de driverklasse tonet.sf.log4jdbc.DriverSpy te wijzigen en "jdbc:log4" toe te voegen aan uw bestaande jdbc-url, uw logboekcategorieën in te stellen en u bent klaar om Gaan!
- In de gelogde uitvoer, voor voorbereide instructies, worden de bindargumenten automatisch ingevoegd in de SQL-uitvoer. Dit verbetert de leesbaarheid en debugging in veel gevallen aanzienlijk.
- SQL-timinginformatie kan worden gegenereerd om te helpen bepalen hoe lang het duurt voordat SQL-statements worden uitgevoerd, en helpt bij het identificeren van statements die te langzaam worden uitgevoerd. applicatie.
- SQL-verbindingsnummerinformatie wordt gegenereerd om problemen met pooling of threading van verbindingen te helpen identificeren. Werkt met elk onderliggend JDBC-stuurprogramma, met JDK 1.4 en hoger, en SLF4J 1.x.
- Open source software, gelicentieerd onder de bedrijfsvriendelijke Apache 2.0-licentie
Gebruik
- Plaats de log4jdbc jar (gebaseerd op de JDK-versie) in het klassenpad van uw toepassing.
- kies het te gebruiken logsysteem, log4j, logback, commons logging..etc worden ondersteund
- Stel uw JDBC-stuurprogrammaklasse in op net.sf.log4jdbc.DriverSpy in de configuratie van uw toepassing. Het onderliggende stuurprogramma dat in veel gevallen wordt bespioneerd, wordt automatisch geladen zonder enige aanvullende configuratie.
-
Voeg jdbc:log4 toe aan de normale jdbc-url die u gebruikt.
Als uw normale jdbc-url bijvoorbeeld isjdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabasethen, wijzigt u deze in:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/databases/MijnDatabase
-
Stel uw loggers in.
jdbc.sqlonly :registreert alleen SQL. SQL die binnen een voorbereide instructie wordt uitgevoerd, wordt automatisch weergegeven met zijn bind-argumenten vervangen door de gegevens die op die positie zijn gebonden, voor een sterk verbeterde leesbaarheid. 1.0
jdbc.sqltiming :registreert de SQL, na de uitvoering, inclusief timingstatistieken over hoe lang het duurde om de SQL uit te voeren. 1.0
jdbc.audit :Registreert ALLE JDBC-aanroepen behalve ResultSets. Dit is een zeer omvangrijke uitvoer en is normaal gesproken niet nodig, tenzij een specifiek JDBC-probleem wordt opgespoord. 1.0
jdbc.resultset :Nog omvangrijker, omdat alle aanroepen naar ResultSet-objecten worden gelogd. 1.0
jdbc.connection :registreert het openen en sluiten van verbindingen en dumpt alle open verbindingsnummers. Dit is erg handig om problemen met verbindingslekken op te sporen.