Megosztás:


Az illesztőprogram működésének nyomon követése

JDBC-illesztőprogram letöltése

Az SQL Serverhez készült Microsoft JDBC-illesztőprogram támogatja a nyomkövetés (vagy naplózás) használatát a JDBC-illesztővel kapcsolatos problémák és problémák megoldásához az alkalmazásban való használat során. A nyomkövetés használatának engedélyezéséhez a JDBC-illesztő a java.util.logging naplózási API-jait használja, amely osztályokat biztosít a Logger és a LogRecord objektumok létrehozásához.

Megjegyzés:

A JDBC-illesztőhöz tartozó natív összetevő (sqljdbc_xa.dll) esetében a nyomkövetést a Built-In Diagnostics (BID) keretrendszer engedélyezi. A BID-ről további információt az SQL Server adatelérési nyomkövetési szolgáltatásában talál.

Az alkalmazás fejlesztésekor hívásokat kezdeményezhet a Logger-objektumokhoz, amelyek létrehozzák a LogRecord objektumokat, amelyeket aztán a rendszer továbbít a kezelőobjektumoknak feldolgozás céljából. A naplózó és a kezelő objektum egyaránt naplózási szinteket és opcionálisan naplózási szűrőket használ annak szabályozásához, hogy mely LogRecord-objektumok legyenek feldolgozva. Ha a naplózási műveletek befejeződnek, a Kezelő objektumok opcionálisan Formatter-objektumokkal tehetik közzé a naplóadatokat.

Alapértelmezés szerint a java.util.logging keretrendszer egy fájlba írja a kimenetét. Ennek a kimeneti naplófájlnak írási engedélyekkel kell rendelkeznie ahhoz a környezethez, amelyben a JDBC-illesztőprogram fut.

Megjegyzés:

A különböző naplózási objektumok programkövetéshez való használatával kapcsolatos további információkért tekintse meg a Java Logging API-k dokumentációját a Sun Microsystems webhelyén.

A következő szakaszok ismertetik a naplózási szinteket és a naplózható kategóriákat, és információkat nyújtanak arról, hogyan engedélyezheti a nyomkövetést az alkalmazásban.

Naplózási szintek

Minden létrehozott naplóüzenethez tartozik naplózási szint. A naplózási szint határozza meg a naplóüzenet fontosságát, amelyet a java.util.logging Level osztálya határoz meg. Ha egy szinten engedélyezi a naplózást, az minden magasabb szinten lehetővé teszi a naplózást. Ez a szakasz a nyilvános naplózási kategóriák és a belső naplózási kategóriák naplózási szintjeit ismerteti. A naplózási kategóriákról a jelen cikk Naplózási kategóriák szakaszában talál további információt.

Az alábbi táblázat a nyilvános naplózási kategóriákhoz elérhető összes naplózási szintet ismerteti.

Név Description
ERŐS Súlyos hibát jelez, és ez a legmagasabb szintű naplózás. A JDBC-illesztőben ez a szint a hibák és kivételek jelentésére szolgál.
FIGYELMEZTETÉS Lehetséges problémát jelez.
INFORMÁCIÓ Tájékoztató üzeneteket tartalmaz.
Konfiguráció Konfigurációs üzeneteket biztosít. A JDBC-illesztő jelenleg nem biztosít konfigurációs üzeneteket.
BÍRSÁG Alapvető nyomkövetési információkat biztosít, beleértve a nyilvános metódusok által kiadott kivételeket is.
JOBB MINŐSÉGŰ Részletes nyomkövetési információkat tartalmaz, beleértve az összes nyilvános metódusbeléptetési és kilépési pontot a társított paraméteradat-típusokkal, valamint a nyilvános osztályok összes nyilvános tulajdonságával. Emellett a bemeneti paraméterek, a kimeneti paraméterek és a metódus visszatérési értékei, kivéve a CLOB, BLOB, NCLOB, Reader, <stream> visszatérési értéktípusokat.
LEGJOBB Részletes nyomkövetési információkat biztosít. Ez a beállítás a naplózás legalacsonyabb szintje.
KI Kikapcsolja a naplózást.
ALL Engedélyezi az összes üzenet naplózását.

Az alábbi táblázat a belső naplózási kategóriákhoz elérhető naplózási szintek mindegyikét ismerteti.

Név Description
ERŐS Súlyos hibát jelez, és ez a legmagasabb naplózási szint. A JDBC-illesztőben ez a szint a hibák és kivételek jelentésére szolgál.
FIGYELMEZTETÉS Lehetséges problémát jelez.
INFORMÁCIÓ Tájékoztató üzeneteket tartalmaz.
BÍRSÁG Nyomkövetési információkat biztosít, beleértve az alapvető objektumok létrehozását és megsemmisítését. Emellett a nyilvános metódusok által feldobott összes kivételt is.
JOBB MINŐSÉGŰ Részletes nyomkövetési információkat tartalmaz, beleértve az összes nyilvános metódusbeléptetési és kilépési pontot a társított paraméteradat-típusokkal, valamint a nyilvános osztályok összes nyilvános tulajdonságával. Emellett a bemeneti paraméterek, a kimeneti paraméterek és a metódus visszatérési értékei a CLOB, BLOB, NCLOB, Reader, <stream> visszatérési értéktípusok kivételével.

A JDBC-illesztőprogram 1.2-es verziójában a következő naplózási kategóriák léteztek, és a FINE naplózási szinttel rendelkezett: SQLServerConnection, SQLServerStatement, XA és SQLServerDataSource. A 2.0-s verziótól kezdve ezek a kategóriák a FINER szintre frissülnek.
LEGJOBB Részletes nyomkövetési információkat biztosít. Ez a beállítás a naplózás legalacsonyabb szintje.

A JDBC-illesztő 1.2-es verziójában a következő naplózási kategóriák léteztek, és a FINEST naplózási szintje volt: TDS. DATA és TDS. TOKEN. A 2.0-s verziótól kezdve megtartják a FINEST naplózási szintjét.
KI Kikapcsolja a naplózást.
ALL Engedélyezi az összes üzenet naplózását.

Naplózási kategóriák

Naplózó objektum létrehozásakor ismertetnie kell az objektummal, hogy melyik megnevezett entitástól vagy kategóriától szeretne naplóadatokat lekérni. A JDBC-illesztőprogram a következő nyilvános naplózási kategóriákat támogatja, amelyek mindegyike a com.microsoft.sqlserver.jdbc illesztőprogram-csomagban van definiálva.

Név Description
Kapcsolat Naplózza az üzeneteket az SQLServerConnection osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be.
Statement Naplózza az üzeneteket az SQLServerStatement osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be.
Adatforrás Naplózza az üzeneteket az SQLServerDataSource osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
Eredményhalmaz Naplózza az üzeneteket az SQLServerResultSet osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be.
Driver Naplózza az üzeneteket az SQLServerDriver osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be.
Resiliency Naplózza az SQLServerConnection osztályban az üzeneteket, amelyek csak az üresjárati kapcsolat rugalmasságának újracsatlakoztatására vonatkoznak. Az alkalmazások a naplózási szintet FINOM és FINOMABB értékként állíthatják be.
Átirányítás Naplózza az SQLServerConnection osztályban csak a kapcsolatmegnyitási újrapróbálkozásokhoz kapcsolódó üzeneteket. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.

A Microsoft JDBC Driver 2.0-s verziójától kezdve az illesztőprogram a com.microsoft.sqlserver.jdbc.internals csomagot is biztosítja, amely a következő belső naplózási kategóriák naplózási támogatását tartalmazza.

Név Description
AuthenticationJNI Naplózza a Windows integrált hitelesítési problémáival kapcsolatos üzeneteket (ha az authenticationScheme kapcsolati tulajdonság implicit módon vagy explicit módon NativeAuthentication értékre van állítva).

Az alkalmazások a naplózási szintet a FINEST és a FINE értékre állíthatják be.
SQLServerConnection Naplózza az üzeneteket az SQLServerConnection osztályban. Az alkalmazások a naplózási szintet FINOM és FINOMABB értékként állíthatják be.
SQLServerDataSource Naplózza az üzeneteket az SQLServerDataSource, az SQLServerConnectionPoolDataSource és az SQLServerPooledConnection osztályban.

Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be.
InputStream A következő adattípusokról naplózza az üzeneteket: java.io.InputStream, java.io.Reader és az adattípusok, amelyek maximális azonosítóval rendelkeznek, például varchar, nvarchar és varbináris adattípusok.

Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be.
SQLServerException Naplózza az üzeneteket az SQLServerException osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerResultSet Naplózza az üzeneteket az SQLServerResultSet osztályban. Az alkalmazások a naplózási szintet FINOM, FINER és FINEST értékre állíthatják be.
SQLServerStatement Naplózza az üzeneteket az SQLServerStatement osztályban. Az alkalmazások a naplózási szintet FINOM, FINER és FINEST értékre állíthatják be.
XA Naplózza az összes XA-tranzakció üzeneteit az SQLServerXADataSource osztályban. Az alkalmazások a naplózási szintet FINOM és FINOMABB értékként állíthatják be.
KerbAuthentication Naplózza a 4- es típusú Kerberos-hitelesítéssel kapcsolatos üzeneteket (ha az authenticationScheme kapcsolati tulajdonság JavaKerberos értékre van állítva). Az alkalmazás beállíthatja a naplózási szintet FINE vagy FINER értékre.
TDS.ADATOK Naplózza az illesztőprogram és az SQL Server közötti TDS protokollszintű beszélgetést tartalmazó üzeneteket. Az elküldött és fogadott TDS-csomagok részletes tartalmát az ASCII és a hexadecimális naplózza. A bejelentkezési hitelesítő adatok (felhasználónevek és jelszavak) nincsenek naplózva. A rendszer minden más adatot naplóz.

Ez a kategória nagyon részletes és részletes üzeneteket hoz létre, és csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja.
TDS.Channel Ez a kategória nyomon követi a TCP kommunikációs csatorna műveleteit az SQL Serverrel. A naplózott üzenetek közé tartozik az aljzat megnyitása és bezárása, valamint az olvasási és írási műveletek. Emellett nyomon követi a Transport Layer Security (TLS) korábbi nevén Secure Sockets Layer (SSL) kapcsolat sql serverrel való létesítéséhez kapcsolódó üzeneteket is.

Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet FINOM, FINOMABB vagy LEGFINOMABB értékre állítja.
TDS. Író Ez a kategória nyomkövetési adatokat ír a TDS-csatornára. Csak az írások hossza van nyomon követve, nem a tartalom. Ez a kategória azt is nyomon követi, hogy a rendszer figyelmeztetést küld-e a kiszolgálónak az utasítás végrehajtásának megszakítása érdekében.

Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja.
TDS. Olvasó Ez a kategória nyomon követ bizonyos olvasási műveleteket a TDS-csatornáról a FINEST szinten. A FINEST szinten a nyomkövetés részletes lehet. A WARNING és a SEVERE szinten ez a kategória akkor követi nyomon az illesztőprogramot, amikor érvénytelen TDS-protokollt kap az SQL Servertől, mielőtt az bezárja a kapcsolatot.

Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet a FINER és a FINEST értékre állítja.
TDS.Parancs Ez a kategória az alacsony szintű állapotáttűnéseket és a TDS-parancsok végrehajtásával kapcsolatos egyéb információkat, például Transact-SQL utasításvégrehajtásokat, ResultSet kurzorlehívásokat, véglegesítéseket stb. nyomon követ.

Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja.
TDS. TOKEN Ez a kategória csak a TDS-csomagokban lévő tokeneket naplózza, és kevésbé részletes, mint a TDS.DATA kategória. Csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja.

A FINEST szinten ez a kategória nyomon követi a válaszban feldolgozott TDS tokeneket. A SÚLYOS szinten ez a kategória nyomon követi, ha érvénytelen TDS-jogkivonatot észlelnek.
SQLServerDatabaseMetaData Naplózza az üzeneteket az SQLServerDatabaseMetaData osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerResultSetMetaData Naplózza az üzeneteket az SQLServerResultSetMetaData osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerParameterMetaData Naplózza az üzeneteket az SQLServerParameterMetaData osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerBlob Naplózza az üzeneteket az SQLServerBlob osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerClob Naplózza az üzeneteket az SQLServerClob osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerSQLXML Naplózza az üzeneteket a belső SQLServerSQLXML osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerDriver Naplózza az üzeneteket az SQLServerDriver osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.
SQLServerNClob Naplózza az üzeneteket az SQLServerNClob osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be.

A nyomkövetés programozott engedélyezése

A nyomkövetés programozott módon engedélyezhető egy Logger-objektum létrehozásával és a naplózandó kategória megjelölésével. Az alábbi kód például bemutatja, hogyan engedélyezheti az SQL-utasítások naplózását:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.FINER);

A kódban való naplózás kikapcsolásához használja a következő kódot:

logger.setLevel(Level.OFF);

Az összes elérhető kategória naplózásához használja a következő kódot:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);

Ha le szeretné tiltani egy adott kategória naplózását, használja a következő kódot:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.OFF);

Nyomkövetés engedélyezése a logging.properties fájllal

A nyomkövetést a logging.properties fájl használatával is engedélyezheti, amely a lib Java Runtime Environment (JRE) 8 telepítésének könyvtárában vagy a conf Java 9 és újabb verziók mappájában található. Ez a fájl a nyomkövetés engedélyezésekor használt naplózók és kezelők alapértelmezett értékeinek beállítására használható.

Az alábbi konfiguráció egy példa a fájlokban logging.properties megadható beállításokra:

# Specify the handler, the handlers will be installed during VM startup.
handlers= java.util.logging.FileHandler

# Default global logging level.
.level= OFF

# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 5000000
java.util.logging.FileHandler.count = 20
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = FINEST

# Facility specific properties.
com.microsoft.sqlserver.jdbc.level=FINEST

Megjegyzés:

A fájl tulajdonságait a logging.properties java.util.logging részét képező LogManager objektummal állíthatja be.

Lásd még

A JDBC-illesztővel kapcsolatos problémák diagnosztizálása