Aktualizacja 2019:log4jdbc nie był utrzymywany od 2015 roku. p6spy nadal wydaje się być aktywnie utrzymywany.
Oryginalna odpowiedź
Dostępnych jest wiele frameworków Spy do tego celu , sprawdź log4jdbc , czuję , że tego szukasz .
Funkcje
- Pełne wsparcie dla JDBC 3 i JDBC 4!
- Łatwe w konfiguracji, w większości przypadków wystarczy zmienić nazwę klasy sterownika tonet.sf.log4jdbc.DriverSpy i dodać „jdbc:log4” do istniejącego adresu URL jdbc, skonfigurować kategorie rejestrowania i gotowe iść!
- W zarejestrowanych danych wyjściowych, w przypadku przygotowanych instrukcji, argumenty wiązania są automatycznie wstawiane do danych wyjściowych SQL. To znacznie poprawia czytelność i debugowanie w wielu przypadkach.
- Można wygenerować informacje o czasie SQL, aby pomóc określić, jak długo trwa uruchamianie instrukcji SQL, pomagając zidentyfikować instrukcje, które działają zbyt wolno. aplikacji.
- Informacje o numerze połączenia SQL są generowane, aby pomóc zidentyfikować problemy z pulą połączeń lub wątkami. Działa z dowolnym sterownikiem JDBC, z JDK 1.4 i wyższym oraz SLF4J 1.x.
- Oprogramowanie typu open source, na licencji przyjaznej dla biznesu licencji Apache 2.0
Wykorzystanie
- Umieść plik jar log4jdbc (w oparciu o wersję JDK) w ścieżce klas aplikacji.
- wybierz system logowania, log4j, logback, logowanie commons..etc są obsługiwane
- Ustaw klasę sterownika JDBC na net.sf.log4jdbc.DriverSpy w konfiguracji aplikacji. Podstawowy sterownik, który jest szpiegowany w wielu przypadkach, zostanie załadowany automatycznie bez dodatkowej konfiguracji.
-
Dodaj jdbc:log4 do normalnego adresu URL jdbc, którego używasz.
Na przykład, jeśli twój normalny adres URL jdbc to isjdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabaseto zmienisz go na:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/databases/MyDatabase
-
Skonfiguruj swoje rejestratory.
jdbc.sqlonly :Rejestruje tylko SQL. SQL wykonywany w ramach przygotowanej instrukcji jest automatycznie wyświetlany z argumentami bindowania zamienionymi na dane powiązane w tej pozycji, co znacznie zwiększa czytelność. 1.0
jdbc.sqltiming :Rejestruje kod SQL po wykonaniu, w tym statystyki czasu dotyczące czasu wykonania kodu SQL. 1.0
jdbc.audit :Rejestruje WSZYSTKIE wywołania JDBC z wyjątkiem zestawów wyników. Jest to bardzo obszerne wyjście i zwykle nie jest potrzebne, chyba że wyśledzimy konkretny problem JDBC. 1.0
jdbc.resultset :Jeszcze bardziej obszerny, ponieważ wszystkie wywołania obiektów ResultSet są rejestrowane. 1.0
jdbc.połączenie :Rejestruje zdarzenia otwarcia i zamknięcia połączenia, a także zrzuca wszystkie otwarte numery połączeń. Jest to bardzo przydatne do wyszukiwania problemów z wyciekiem połączenia.