sql >> Databasteknik >  >> RDS >> Oracle

Hur man aktiverar loggning för SQL-satser när man använder JDBC

2019 uppdatering:log4jdbc har inte underhållits sedan 2015. p6spy verkar fortfarande vara aktivt underhållen.

Originalt svar

Det finns många spionramar tillgängliga för detta ändamål, vänligen kolla log4jdbc, jag föll det här är vad du letar efter.

Funktioner

  • Fullt stöd för JDBC 3 och JDBC 4!
  • Lätt att konfigurera, i de flesta fall behöver du bara ändra förarklassnamnet tonet.sf.log4jdbc.DriverSpy och lägga till "jdbc:log4" till din befintliga jdbc-url, ställa in dina loggningskategorier och du är redo att gå!
  • I den loggade utgången, för förberedda satser, infogas bindningsargumenten automatiskt i SQL-utgången. Detta förbättrar avsevärt läsbarheten och felsökningen i många fall.
  • SQL-tidinformation kan genereras för att hjälpa till att identifiera hur lång tid det tar att köra SQL-satser, hjälpa till att identifiera satser som körs för långsamt och denna data kan efterbehandlas med ett inkluderat verktyg för att producera profileringsrapportdata för att snabbt identifiera långsam SQL i din ansökan.
  • SQL-anslutningsnummerinformation genereras för att hjälpa till att identifiera problem med anslutningspoolning eller trådning. Fungerar med alla underliggande JDBC-drivrutiner, med JDK 1.4 och högre, och SLF4J 1.x.
  • Öppen källkod, licensierad under den affärsvänliga Apache 2.0-licensen

Användning

  • Placera log4jdbc jar (baserat på JDK-versionen) i din applikations klassväg.
  • välj loggningssystem att använda, log4j, logback, commons-loggning..etc stöds
  • Ställ in din JDBC-drivrutinsklass till net.sf.log4jdbc.DriverSpy i din applikationskonfiguration. Den underliggande drivrutinen som spioneras på i många fall kommer att laddas automatiskt utan någon ytterligare konfiguration.
  • Lägg jdbc:log4 till den normala jdbc-url som du använder.

    Till exempel, om din vanliga jdbc-url isjdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabasethen Du skulle ändra den till:jdbc:log4jdbc:derby://localhost:1527/ /db-derby-10.2.2.0-bin/databases/MyDatabase

  • Ställ in dina loggare.

    jdbc.sqlonly :Loggar endast SQL. SQL som exekveras i en förberedd sats visas automatiskt med dess bindningsargument ersatt med data som är bunden till den positionen, för avsevärt ökad läsbarhet. 1.0

    jdbc.sqltime :Loggar SQL, efter körning, inklusive tidsstatistik för hur lång tid det tog att köra SQL. 1.0

    jdbc.audit :Loggar ALLA JDBC-anrop förutom ResultSets. Detta är en mycket voluminös utdata och behövs normalt inte om man inte spårar ett specifikt JDBC-problem. 1.0

    jdbc.resultset :Ännu mer omfattande, eftersom alla anrop till ResultSet-objekt loggas. 1.0

    jdbc.connection :Loggar anslutningsöppning och stängningshändelser samt dumpar alla öppna anslutningsnummer. Detta är mycket användbart för att hitta problem med anslutningsläckor.



  1. Hur man bygger om en inkonsekvent PostgreSQL-slav

  2. MySQL-förberedda uttalanden

  3. (+) =operator i oracle sql i where-sats

  4. MySQL vs MySQLi när du använder PHP