Ablaufverfolgung für Treibervorgänge

Microsoft SQL Server 2005 JDBC Driver unterstützt Ablaufverfolgung (oder Protokollierung), um die Lösung von Problemen mit dem JDBC-Treiber in der Anwendung zu ermöglichen. Für die Ablaufverfolgung verwendet der JDBC-Treiber die Protokollierungs-APIs in "java.util.logging", die eine Reihe von Klassen zum Erstellen von Logger- und LogRecord-Objekten bereitstellen.

Hinweis

Für die im JDBC-Treiber enthaltene systemeigene Komponente ("sqljdbc_xa.dll") wird die Ablaufverfolgung durch das BID-Framework (Built-In Diagnostics) ermöglicht. Informationen zu BID finden Sie in Data Access Tracing in SQL Server 2005.

Bei der Entwicklung der Anwendung können Sie Logger-Objekte aufrufen, die wiederum LogRecord-Objekte erstellen, die zur Verarbeitung anschließend an Handler-Objekte übergeben werden. Logger-Objekte und Handler-Objekte verwenden Protokollierungsstufen und optional Protokollierungsfilter, um zu steuern, welche LogRecords verarbeitet werden. Nach Abschluss der Protokolliervorgänge können die Handler-Objekte die Protokollinformationen ggf. mit Formatter-Objekten veröffentlichen.

Standardmäßig erfolgt die Ausgabe des java.util.logging-Frameworks in eine Datei. Diese Ausgabeprotokolldatei muss Schreibberechtigungen für den Kontext aufweisen, unter dem der JDBC-Treiber ausgeführt wird.

Hinweis

Weitere Informationen zur Verwendung der verschiedenen Protokollierungsobjekte für die Programmablaufverfolgung finden Sie unter Java Logging APIs auf der Sun Microsystems-Website.

Die folgenden Abschnitte beschreiben die Protokollierstufen sowie die protokollierbaren Kategorien und enthalten Informationen darüber, wie die Ablaufverfolgung in der Anwendung aktiviert werden kann.

Protokollierstufen

Jeder erstellten Protokollmeldung ist eine Protokollierstufe zugeordnet. Die Protokollierstufe bestimmt die Wichtigkeit der Protokollmeldung, die durch die Level-Klasse in "java.util.logging" definiert wird. Die folgende Tabelle beschreibt die verfügbaren Protokollierstufen:

Name Beschreibung

SEVERE

Die höchste Protokollierstufe, die schwerwiegende Fehler kennzeichnet. Im JDBC-Treiber wird diese Stufe für Fehler und Ausnahmen verwendet.

WARNING

Kennzeichnet ein mögliches Problem.

INFO

Stellt informative Meldungen bereit.

CONFIG

Stellt Konfigurationsmeldungen bereit. Im JDBC-Treiber wird diese Stufe für globale Konfigurationseinstellungen verwendet.

FINE

Stellt Ablaufverfolgungsinformationen bereit. Im JDBC-Treiber wird diese Stufe für die meisten Protokollmeldungen verwendet.

FINER

Stellt ausführliche Ablaufverfolgungsinformationen bereit.

FINEST

Stellt sehr ausführliche Ablaufverfolgungsinformationen bereit. Diese Stufe ist die kleinste Protokollierstufe.

OFF

Deaktiviert die Protokollierung.

ALL

Aktiviert die Protokollierung aller Meldungen.

Protokollierungskategorien

Wenn Sie ein Logger-Objekt erstellen, müssen Sie an das Objekt die benannte Entität oder Kategorie übergeben, über die Protokollinformationen ermittelt werden sollen. Der JDBC-Treiber unterstützt die folgenden Protokollierungskategorien.

Name Beschreibung

SQLServerConnection

Protokolliert Meldungen in der SQLServerConnection-Klasse. Die Standardprotokollierstufe ist FINE.

SQLServerStatement

Protokolliert Meldungen in der SQLServerStatement-Klasse. Die Standardprotokollierstufe ist FINE.

TDS.DATA

Protokolliert TDS-Meldungen. Diese Kategorie erstellt sehr ausführliche Meldungen. Sie kann nur aktiviert werden, indem die Protokollierstufe auf FINEST eingestellt wird.

TDS.TOKEN

Protokolliert TDS-Meldungen. Diese Kategorie protokolliert nur die Token im TDS-Paket und ist weniger ausführlich als die TDS.DATA-Kategorie.

XA

Protokolliert alle XA-Transaktionen in den SQLServerXAConnection-, SQLServerXAResource- und SQLServerXADataSource-Klassen. Die Standardprotokollierstufe ist FINE.

SQLServerDataSource

Protokolliert Meldungen in den SQLServerDataSource-, SQLServerConnectionPoolDataSource- und SQLServerPooledConnection-Klassen. Die Standardprotokollierstufe ist FINE.

Programmgesteuerte Aktivierung der Ablaufverfolgung

Die Ablaufverfolgung kann programmgesteuert aktiviert werden, indem ein Logger-Objekt erstellt und die zu protokollierende Kategorie angegeben wird. Der folgende Code veranschaulicht beispielsweise, wie die Protokollierung für SQL-Anweisungen aktiviert wird:

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

Die Protokollierung können Sie im Code folgendermaßen deaktivieren:

logger.setLevel(Level.OFF);

Mit dem folgenden Code können Sie alle verfügbaren Kategorien protokollieren:

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

Mit dem folgenden Code können Sie die Protokollierung einer bestimmten Kategorie deaktivieren:

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

Aktivieren der Ablaufverfolgung mit der Datei Logging.Properties

Sie können die Ablaufverfolgung auch mit der Datei logging.properties aktivieren, die sich im Verzeichnis lib der JRE-Installation (Java Runtime Environment) befindet. In dieser Datei können Sie die Standardwerte für die Protokollierung und Handler festlegen, die bei Aktivierung der Ablaufverfolgung verwendet werden sollen.

Das folgende Beispiel veranschaulicht die Einstellungen, die in logging.properties-Dateien vorgenommen werden können:

   # Specify the handlers to create in the root logger
   # (all loggers are children of the root logger).
   # The following creates two handlers.
   handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler

   # Set the default logging level for the root logger.
   .level = OFF

   # Set the default logging level for new ConsoleHandler instances.
   java.util.logging.ConsoleHandler.level = FINE

   # Set the default logging level for new FileHandler instances.
   java.util.logging.FileHandler.level = OFF

   # Set the default formatter for new ConsoleHandler instances.
   java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

   # Set the default logging level for the logger named ConnectionPool.
   ConnectionPool.level = OFF

Hinweis

Mit dem LogManager-Objekt, das Bestandteil von "java.util.logging" ist, können Sie die Eigenschaften in der Datei logging.properties festlegen.

Siehe auch

Andere Ressourcen

Diagnostizieren von Problemen mit dem JDBC-Treiber