Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So aktivieren Sie die Protokollierung für SQL-Anweisungen bei Verwendung von JDBC

Update 2019:log4jdbc wurde seit 2015 nicht mehr gewartet. p6spy scheint immer noch aktiv gewartet zu werden.

Originalantwort

Es gibt viele Spy-Frameworks für diesen Zweck, bitte überprüfen Sie log4jdbc , ich bin der Meinung, dass Sie danach suchen.

Funktionen

  • Volle Unterstützung für JDBC 3 und JDBC 4!
  • Einfach zu konfigurieren, in den meisten Fällen müssen Sie lediglich den Treiberklassennamen tonet.sf.log4jdbc.DriverSpy ändern und "jdbc:log4" Ihrer bestehenden jdbc-URL voranstellen, Ihre Protokollierungskategorien einrichten und schon können Sie loslegen gehen!
  • In der protokollierten Ausgabe werden für vorbereitete Anweisungen die Bindeargumente automatisch in die SQL-Ausgabe eingefügt. Dies verbessert die Lesbarkeit und das Debugging für viele Fälle erheblich.
  • SQL-Timing-Informationen können generiert werden, um festzustellen, wie lange die Ausführung von SQL-Anweisungen dauert, was dabei hilft, Anweisungen zu identifizieren, die zu langsam ausgeführt werden, und diese Daten können mit einem enthaltenen Tool nachbearbeitet werden, um Profiling-Berichtsdaten zur schnellen Identifizierung von langsamem SQL in Ihrem zu erstellen Anwendung.
  • Informationen zur SQL-Verbindungsnummer werden generiert, um bei der Identifizierung von Verbindungspooling- oder Threading-Problemen zu helfen. Funktioniert mit jedem zugrunde liegenden JDBC-Treiber, mit JDK 1.4 und höher und SLF4J 1.x.
  • Open-Source-Software, lizenziert unter der unternehmensfreundlichen Apache 2.0-Lizenz

Verwendung

  • Platzieren Sie die JAR-Datei log4jdbc (basierend auf der JDK-Version) im Klassenpfad Ihrer Anwendung.
  • Wählen Sie das zu verwendende Protokollierungssystem, log4j, Logback, Commons-Protokollierung usw. werden unterstützt
  • Stellen Sie Ihre JDBC-Treiberklasse in der Konfiguration Ihrer Anwendung auf net.sf.log4jdbc.DriverSpy ein. Der zugrunde liegende Treiber, der in vielen Fällen ausspioniert wird, wird automatisch ohne zusätzliche Konfiguration geladen.
  • Stellen Sie der normalen jdbc-URL, die Sie verwenden, jdbc:log4 voran.

    Wenn Ihre normale jdbc-URL beispielsweise jdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabase ist, dann würden Sie sie ändern in:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/databases/MeineDatenbank

  • Richten Sie Ihre Logger ein.

    jdbc.sqlonly :Protokolliert nur SQL. SQL, das innerhalb einer vorbereiteten Anweisung ausgeführt wird, wird automatisch angezeigt, wobei die Bindeargumente durch die an dieser Position gebundenen Daten ersetzt werden, um die Lesbarkeit erheblich zu verbessern. 1.0

    jdbc.sqltiming :Protokolliert die SQL nach der Ausführung, einschließlich Zeitstatistiken darüber, wie lange die Ausführung der SQL gedauert hat. 1.0

    jdbc.audit :Protokolliert ALLE JDBC-Aufrufe mit Ausnahme von ResultSets. Dies ist eine sehr umfangreiche Ausgabe und wird normalerweise nicht benötigt, es sei denn, Sie suchen nach einem bestimmten JDBC-Problem. 1.0

    jdbc.resultset :Noch umfangreicher, da alle Aufrufe von ResultSet-Objekten protokolliert werden. 1.0

    jdbc.connection :Protokolliert Ereignisse zum Öffnen und Schließen von Verbindungen und gibt alle offenen Verbindungsnummern aus. Dies ist sehr nützlich, um Probleme mit Verbindungslecks aufzuspüren.