Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterownik JDBC firmy Microsoft dla programu SQL Server obsługuje korzystanie ze śledzenia (lub rejestrowania), aby pomóc rozwiązać problemy i trudności ze sterownikiem JDBC, gdy jest używany w aplikacji. Aby włączyć korzystanie z logowania, sterownik JDBC używa API do logowania w java.util.logging, który dostarcza zestaw klas do tworzenia obiektów Logger i LogRecord.
Uwaga / Notatka
W przypadku natywnego składnika (sqljdbc_xa.dll), który jest dołączony do sterownika JDBC, śledzenie jest włączane przez zintegrowane środowisko diagnostyczne Built-In Diagnostics (BID). Aby uzyskać informacje na temat BID, zobacz Śledzenie dostępu do danych w programie SQL Server.
Podczas tworzenia aplikacji można wykonywać wywołania obiektów rejestratora, które z kolei tworzą obiekty LogRecord, które są następnie przekazywane do obiektów programu obsługi do przetwarzania. Obiekty rejestratora i programu obsługi używają zarówno poziomów rejestrowania, jak i opcjonalnie filtrów rejestrowania w celu regulowania, które obiekty LogRecords są przetwarzane. Po zakończeniu operacji rejestrowania obiekty programu obsługi mogą opcjonalnie używać obiektów formatera do publikowania informacji dziennika.
Domyślnie struktura java.util.logging zapisuje dane wyjściowe w pliku. Ten plik dziennika wyjściowego musi mieć uprawnienia do zapisu dla kontekstu, w którym jest uruchomiony sterownik JDBC.
Uwaga / Notatka
Aby uzyskać więcej informacji na temat używania różnych obiektów rejestrowania do śledzenia programów, zobacz dokumentację interfejsów API rejestrowania języka Java w witrynie sieci Web Sun Microsystems.
W poniższych sekcjach opisano poziomy rejestrowania i kategorie, które można rejestrować, oraz podano informacje o sposobie włączania śledzenia w aplikacji.
Poziomy rejestrowania
Każda utworzona wiadomość dziennika ma skojarzony poziom rejestrowania. Poziom rejestrowania określa ważność komunikatu dziennika, który jest definiowany przez klasę Level w pliku java.util.logging. Włączenie rejestrowania na jednym poziomie umożliwia również rejestrowanie na wszystkich wyższych poziomach. W tej sekcji opisano poziomy rejestrowania dla kategorii rejestrowania publicznego i kategorii rejestrowania wewnętrznego. Aby uzyskać więcej informacji na temat kategorii rejestrowania, zobacz sekcję Kategorie rejestrowania w tym artykule.
W poniższej tabeli opisano każdy z dostępnych poziomów rejestrowania dla kategorii rejestrowania publicznego.
| Name | Description |
|---|---|
| CIĘŻKI | Sygnalizuje poważny błąd i jest najwyższym poziomem rejestrowania. W sterowniku JDBC ten poziom jest używany do raportowania błędów i wyjątków. |
| OSTRZEŻENIE | Wskazuje potencjalny problem. |
| Informacje | Zawiera komunikaty informacyjne. |
| Konfiguracja | Udostępnia komunikaty konfiguracyjne. Sterownik JDBC nie udostępnia obecnie żadnych komunikatów konfiguracji. |
| GRZYWNA | Zawiera podstawowe informacje o śledzeniu, w tym wszystkie wyjątki wyrzucane przez metody publiczne. |
| DROBNIEJSZE | Zapewnia szczegółowe informacje śledzące, w tym wszystkie publiczne punkty wejścia i wyjścia metod wraz z powiązanymi typami danych parametrów oraz publiczne właściwości klas publicznych. Ponadto parametry wejściowe, parametry wyjściowe i wartości zwracane przez metodę z wyjątkiem typów wartości zwracanej takich jak CLOB, BLOB, NCLOB, Reader, <stream>. |
| NAJLEPSZY | Zawiera wysoce szczegółowe informacje o śledzeniu. To ustawienie jest najniższym poziomem rejestrowania. |
| OFF | Wyłącza rejestrowanie. |
| ALL | Włącza rejestrowanie wszystkich komunikatów. |
W poniższej tabeli opisano każdy z dostępnych poziomów rejestrowania dla kategorii rejestrowania wewnętrznego.
| Name | Description |
|---|---|
| CIĘŻKI | Wskazuje poważny błąd i jest najwyższym poziomem logowania. W sterowniku JDBC ten poziom jest używany do raportowania błędów i wyjątków. |
| OSTRZEŻENIE | Wskazuje potencjalny problem. |
| Informacje | Zawiera komunikaty informacyjne. |
| GRZYWNA | Udostępnia informacje dotyczące śledzenia, w tym podstawowe operacje tworzenia i niszczenia obiektów. Ponadto wszystkie wyjątki zgłaszane przez metody publiczne. |
| DROBNIEJSZE | Zawiera szczegółowe informacje o śledzeniu, w tym wszystkie punkty wejścia i wyjścia wszystkich metod publicznych oraz skojarzone typy danych parametrów, a także wszystkie właściwości publiczne dla klas publicznych. Ponadto parametry wejściowe, parametry wyjściowe i wartości zwracane przez metodę z wyjątkiem CLOB, BLOB, NCLOB, Reader, <stream> return value types. Następujące kategorie rejestrowania istniały w wersji 1.2 sterownika JDBC i miały poziom rejestrowania FINE: SQLServerConnection, SQLServerStatement, XA i SQLServerDataSource. Począwszy od wersji 2.0, te kategorie są uaktualniane do poziomu FINER. |
| NAJLEPSZY | Zawiera wysoce szczegółowe informacje o śledzeniu. To ustawienie jest najniższym poziomem rejestrowania. Następujące kategorie rejestrowania istniały w wersji 1.2 sterownika JDBC i miały poziom rejestrowania FINEST: TDS.DATA i TDS.TOKEN. Począwszy od wersji 2.0, zachowywany jest poziom rejestrowania FINEST. |
| OFF | Wyłącza rejestrowanie. |
| ALL | Włącza rejestrowanie wszystkich komunikatów. |
Kategorie rejestrowania
Podczas tworzenia obiektu Loggera, należy określić nazwę podmiotu lub kategorii, z której chcesz otrzymać informacje dziennika. Sterownik JDBC obsługuje następujące publiczne kategorie rejestrowania, które są zdefiniowane w pakiecie sterowników com.microsoft.sqlserver.jdbc.
| Name | Description |
|---|---|
| Połączenie | Rejestruje komunikaty w klasie SQLServerConnection . Aplikacje mogą ustawić poziom rejestrowania jako FINER. |
| Statement | Rejestruje komunikaty w klasie SQLServerStatement . Aplikacje mogą ustawić poziom logowania jako FINER. |
| Źródło danych | Rejestruje komunikaty w klasie SQLServerDataSource . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| Zbiór wyników | Rejestruje komunikaty w klasie SQLServerResultSet . Aplikacje mogą ustawić poziom logowania na FINER. |
| Driver | Rejestruje komunikaty w klasie SQLServerDriver . Aplikacje mogą ustawić poziom logowania jako FINER. |
| Resiliency | Rejestruje komunikaty w klasie SQLServerConnection dotyczące tylko procesów ponownego nawiązania połączeń w celu zapewnienia odporności połączeń w stanie bezczynności. Aplikacje mogą ustawić poziom rejestrowania jako FINE i FINER. |
| Redirection | Rejestruje komunikaty w klasie SQLServerConnection odnoszące się tylko do ponownych prób otwarcia połączenia. Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
Począwszy od sterownika JDBC firmy Microsoft w wersji 2.0, sterownik udostępnia również pakiet com.microsoft.sqlserver.jdbc.internals, który obejmuje obsługę rejestrowania dla następujących kategorii rejestrowania wewnętrznego.
| Name | Description |
|---|---|
| AuthenticationJNI | Rejestruje komunikaty dotyczące problemów z uwierzytelnianiem zintegrowanym z systemem Windows (gdy właściwość połączenia authenticationScheme jest niejawnie lub jawnie ustawiona na NativeAuthentication). Aplikacje mogą ustawić poziom rejestrowania jako FINEST i FINE. |
| SQLServerConnection | Rejestruje komunikaty w klasie SQLServerConnection . Aplikacje mogą ustawić poziom rejestrowania jako FINE i FINER. |
| SQLServerDataSource | Rejestruje komunikaty w klasach SQLServerDataSource, SQLServerConnectionPoolDataSource i SQLServerPooledConnection . Aplikacje mogą ustawić poziom rejestrowania jako FINER. |
| Strumień wejściowy | Rejestruje komunikaty o następujących typach danych: java.io.InputStream, java.io.Reader oraz typach danych ze specyfikatorem maksymalnym, takich jak varchar, nvarchar i varbinary. Aplikacje mogą ustawić poziom rejestrowania jako FINER. |
| SQLServerException | Rejestruje komunikaty w klasie SQLServerException . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerResultSet | Rejestruje komunikaty w klasie SQLServerResultSet . Aplikacje mogą ustawić poziom rejestrowania jako FINE, FINER i FINEST. |
| SQLServerStatement | Rejestruje komunikaty w klasie SQLServerStatement . Aplikacje mogą ustawić poziom rejestrowania jako FINE, FINER i FINEST. |
| XA | Rejestruje komunikaty dla wszystkich transakcji XA w klasie SQLServerXADataSource . Aplikacje mogą ustawić poziom rejestrowania jako FINE i FINER. |
| KerbAuthentication | Rejestruje komunikaty o typie 4 uwierzytelniania Kerberos (gdy właściwość połączenia authenticationScheme jest ustawiona na JavaKerberos). Aplikacja może ustawić poziom rejestrowania jako FINE lub FINER. |
| TDS.DANYCH | Rejestruje komunikaty zawierające konwersację na poziomie protokołu TDS między sterownikiem a programem SQL Server. Zawartość każdego wysłanego i odebranego pakietu TDS jest szczegółowo rejestrowana w formatach ASCII i szesnastkowym. Poświadczenia logowania (nazwy użytkowników i hasła) nie są rejestrowane. Wszystkie inne dane są rejestrowane. Ta kategoria tworzy bardzo rozbudowane i szczegółowe komunikaty i można je włączyć tylko przez ustawienie poziomu rejestrowania na FINEST. |
| TDS.Channel | Ta kategoria śledzi akcje kanału komunikacji TCP za pomocą programu SQL Server. Zarejestrowane komunikaty obejmują otwieranie i zamykanie gniazd, a także odczyty i zapisy. Śledzi również komunikaty związane z ustanawianiem protokołu Transport Layer Security (TLS), znanego wcześniej jako Secure Sockets Layer (SSL), połączenia z programem SQL Server. Tę kategorię można włączyć tylko przez ustawienie poziomu rejestrowania na FINE, FINER lub FINEST. |
| TDS. Pisarz | Ta kategoria śledzi zapisy w kanale TDS. Śledzona jest tylko długość zapisów, a nie zawartość. Ta kategoria śledzi również problemy, gdy sygnał uwagi jest wysyłany do serwera w celu anulowania wykonania instrukcji. Tę kategorię można włączyć tylko przez ustawienie poziomu logowania na FINEST. |
| TDS. Czytnik | Ta kategoria śledzi niektóre operacje odczytu z kanału TDS na poziomie FINEST. Na poziomie FINEST, śledzenie może być rozbudowane. Na poziomach OSTRZEŻENIE i KRYTYCZNE ta kategoria rejestruje, kiedy sterownik odbiera nieprawidłowy protokół TDS z SQL Server, zanim zamknie połączenie. Tę kategorię można włączyć tylko przez ustawienie poziomu rejestrowania na FINER i FINEST. |
| TDS.Polecenie | Ta kategoria śledzi przejścia stanów niskiego poziomu oraz inne informacje związane z wykonywaniem poleceń TDS, takich jak wykonywanie instrukcji Transact-SQL, pobieranie kursorów ResultSet, zatwierdzanie transakcji itp. Tę kategorię można włączyć tylko przez ustawienie poziomu logowania na FINEST. |
| TDS.TOKEN | Ta kategoria rejestruje tylko tokeny w pakietach TDS i jest mniej szczegółowa niż kategoria TDS.DATA. Można to włączyć tylko przez ustawienie poziomu rejestrowania na FINEST. Na najwyższym poziomie szczegółowości ta kategoria śledzi tokeny TDS podczas ich przetwarzania w odpowiedzi. Na poziomie SEVERE ta kategoria śledzi, gdy napotkany zostanie nieprawidłowy token TDS. |
| SQLServerDatabaseMetaData | Rejestruje komunikaty w klasie SQLServerDatabaseMetaData . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerResultSetMetaData | Rejestruje komunikaty w klasie SQLServerResultSetMetaData . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerParameterMetaData | Rejestruje komunikaty w klasie SQLServerParameterMetaData . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerBlob | Rejestruje komunikaty w klasie SQLServerBlob . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerClob | Rejestruje komunikaty w klasie SQLServerClob . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerSQLXML | Rejestruje komunikaty w wewnętrznej klasie SQLServerSQLXML. Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerDriver | Rejestruje komunikaty w klasie SQLServerDriver . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
| SQLServerNClob | Rejestruje komunikaty w klasie SQLServerNClob . Aplikacje mogą ustawić poziom rejestrowania jako FINE. |
Programistyczne włączanie śledzenia
Śledzenie można włączyć programowo, tworząc obiekt rejestratora i wskazując kategorię do zarejestrowania. Na przykład poniższy kod przedstawia sposób włączania rejestrowania dla instrukcji SQL:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.FINER);
Aby wyłączyć rejestrowanie w kodzie, użyj następującego kodu:
logger.setLevel(Level.OFF);
Aby zarejestrować wszystkie dostępne kategorie, użyj następującego kodu:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);
Aby wyłączyć rejestrowaną konkretną kategorię, użyj następującego kodu:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.OFF);
Włączanie śledzenia przy użyciu pliku logging.properties
Śledzenie można również włączyć przy użyciu logging.properties pliku , który można znaleźć w lib katalogu instalacji środowiska Java Runtime Environment (JRE) 8 lub conf folderu dla środowiska Java 9 i nowszych. Ten plik może służyć do ustawiania wartości domyślnych dla rejestratorów i obsług, które będą używane, gdy śledzenie jest włączone.
Poniższa konfiguracja to przykład ustawień, które można wprowadzić w plikach logging.properties :
# 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
Uwaga / Notatka
Właściwości w logging.properties pliku można ustawić przy użyciu obiektu LogManager, który jest częścią pliku java.util.logging.