sql >> Databáze >  >> RDS >> Oracle

Jak povolit protokolování pro příkazy SQL při použití JDBC

Aktualizace z roku 2019:log4jdbc není od roku 2015 udržován. Zdá se, že p6spy je stále aktivně udržován.

Původní odpověď

Pro tento účel je k dispozici mnoho Spy frameworků, zkontrolujte prosím log4jdbc, tohle je to, co hledáte.

Funkce

  • Plná podpora pro JDBC 3 a JDBC 4!
  • Snadná konfigurace, ve většině případů vše, co musíte udělat, je změnit název třídy ovladače tonet.sf.log4jdbc.DriverSpy a přidat „jdbc:log4“ před vaši existující adresu URL jdbc, nastavit kategorie protokolování a jste připraveni jít!
  • V protokolovaném výstupu jsou pro připravené příkazy argumenty vazby automaticky vloženy do výstupu SQL. To výrazně zlepšuje čitelnost a ladění v mnoha případech.
  • Je možné generovat informace o časování SQL, které pomohou určit, jak dlouho trvá spuštění příkazů SQL, což pomáhá identifikovat příkazy, které běží příliš pomalu, a tato data lze následně zpracovat pomocí přiloženého nástroje k vytvoření dat profilingreport pro rychlou identifikaci pomalého SQL ve vašem aplikace.
  • Informace o čísle připojení SQL se generují, aby pomohly identifikovat problémy se sdružováním připojení nebo vlákny. Funguje s jakýmkoli základním ovladačem JDBC, s JDK 1.4 a vyšší a SLF4J 1.x.
  • Software s otevřeným zdrojovým kódem, licencovaný na základě obchodní licence Apache 2.0

Využití

  • Umístěte jar log4jdbc (na základě verze JDK) do třídy vaší aplikace.
  • vyberte logovací systém, který chcete použít, log4j, logback, commons logging atd. jsou podporovány
  • V konfiguraci aplikace nastavte třídu ovladače JDBC na net.sf.log4jdbc.DriverSpy. Základní ovladač, který je v mnoha případech sledován, bude načten automaticky bez jakékoli další konfigurace.
  • Před běžnou jdbc url, kterou používáte, přidejte jdbc:log4.

    Například, pokud je vaše normální jdbc url isjdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabasethen Změnili byste ji na:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/databases/MyDatabase

  • Nastavte si loggery.

    jdbc.sqlonly :Protokoluje pouze SQL. SQL spouštěný v rámci připraveného příkazu se automaticky zobrazí s argumenty vazby nahrazenými daty vázanými na danou pozici, což výrazně zvyšuje čitelnost. 1.0

    jdbc.sqltiming :Zaznamenává SQL po spuštění, včetně časových statistik o tom, jak dlouho trvalo spuštění SQL. 1.0

    jdbc.audit :Zaznamenává VŠECHNA volání JDBC kromě ResultSets. Jedná se o velmi objemný výstup a není normálně potřeba, pokud se nesleduje konkrétní problém JDBC. 1.0

    jdbc.resultset :Ještě objemnější, protože všechna volání objektů ResultSet jsou protokolována. 1.0

    jdbc.connection :Zaznamenává události otevření a zavření připojení a také vypíše všechna čísla otevřených připojení. To je velmi užitečné při hledání problémů s netěsností připojení.



  1. převést sériové číslo Excel Date na běžné datum

  2. 10 hlavních důvodů, proč byste se měli učit SQL

  3. Jak opravit „Schéma oddílů ‚…‘ nemá žádnou další použitou skupinu souborů“ v SQL Server

  4. SQL Server převod varbinary na řetězec