Microsoft SQL Server 2005 JDBC Driver 支援使用追蹤 (或記錄),協助解決在應用程式中使用 JDBC 驅動程式時所發生的問題。為了啟用追蹤,JDBC 驅動程式使用 java.util.logging 中的記錄 API,它們會提供一組類別來建立 Logger 和 LogRecord 物件。
注意
若是 JDBC 驅動程式隨附的原生元件 (sqljdbc_xa.dll),內建診斷 (BID) 架構會啟用追蹤。如需 BID 的相關資訊,請參閱<SQL Server 2005 中的資料存取追蹤> (英文)。
開發應用程式時,可以呼叫 Logger 物件,進而建立 LogRecord 物件,這些物件接著會傳遞至 Handler 物件以進行處理。Logger 和 Handler 物件都使用記錄層次,另可選擇使用記錄篩選,以管理要處理哪些 LogRecords。完成記錄作業時,Handler 物件可以選擇性地使用 Formatter 物件,以發行記錄資訊。
根據預設,java.util.logging 架構會將其輸出寫入到檔案。此輸出記錄檔必須將寫入權限授與給執行 JDBC 驅動程式的內容。
注意
如需使用各種記錄物件以進行程式追蹤的詳細資訊,請參閱 Sun Microsystems 網站上的<Java 記錄 API>文件 (英文)。
下列章節說明記錄層次以及可以記錄的類別目錄,並提供如何在應用程式中啟用追蹤的相關資訊。
記錄層次
所建立的每則記錄訊息都有相關聯的記錄層次。記錄層次用於判斷記錄訊息的重要性,是由 java.util.logging 中的 Level 類別來定義。下表說明每個可用的記錄層次。
| 名稱 | 描述 |
|---|---|
SEVERE |
表示嚴重錯誤,這是最高的記錄層次。在 JDBC 驅動程式中,這個層次用於報告錯誤和例外狀況。 |
WARNING |
表示潛在問題。 |
INFO |
提供參考訊息。 |
CONFIG |
提供組態訊息。在 JDBC 驅動程式中,這個層次用於全域範圍的組態設定。 |
FINE |
提供追蹤資訊。在 JDBC 驅動程式中,大部份的記錄訊息都使用此層級。 |
FINER |
提供詳細的追蹤資訊。 |
FINEST |
提供非常詳細的追蹤資訊。這是最低的記錄層次。 |
OFF |
關閉記錄。 |
ALL |
啟用記錄所有訊息。 |
記錄類別目錄
建立 Logger 物件時,必須告知物件您有興趣從中取得記錄資訊的具名實體或類別目錄。JDBC 驅動程式支援下列的記錄類別目錄。
| 名稱 | 描述 |
|---|---|
SQLServerConnection |
記錄 SQLServerConnection 類別中的訊息。預設的記錄層次是 FINE。 |
SQLServerStatement |
記錄 SQLServerStatement 類別中的訊息。預設的記錄層次是 FINE。 |
TDS.DATA |
記錄 TDS 訊息。這個類別目錄會建立非常詳細的訊息,並只能透過將記錄層次設為 FINEST 而啟用。 |
TDS.TOKEN |
記錄 TDS 訊息。這個類別目錄只會記錄 TDS 封包中的 Token,跟 TDS.DATA 類別目錄比起來較不詳細。 |
XA |
記錄 SQLServerXAConnection、SQLServerXAResource 和 SQLServerXADataSource 類別中所有 XA 交易的訊息。預設的記錄層次是 FINE。 |
SQLServerDataSource |
記錄 SQLServerDataSource、SQLServerConnectionPoolDataSource 和 SQLServerPooledConnection 類別中的訊息。預設的記錄層次是 FINE。 |
以程式設計方式啟用追蹤
建立 Logger 物件並指出要記錄的類別目錄,就能以程式設計的方式啟用追蹤。例如,下列程式碼會顯示如何啟用 SQL 陳述式的記錄:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.SQLServerStatement");
logger.setLevel(Level.FINE);
若要關閉程式碼中的記錄,請使用下列:
logger.setLevel(Level.OFF);
若要記錄所有可用的類別目錄,請使用下列:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);
若要停止記錄特定的類別目錄,請使用下列:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.TDS");
logger.setLevel(Level.OFF);
使用 Logging.Properties 檔案來啟用追蹤
您也可以使用logging.properties檔來啟用追蹤,此檔案位於 Java Runtime Environment (JRE) 安裝的lib目錄中。可以用這個檔案來設定當啟用追蹤時,所要使用的記錄器和處理常式預設值。
下列是可在 logging.properties 檔案中進行的設定範例:
# 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
注意
您可以使用 LogManager 物件 (屬於 java.util.logging 的一部分),來設定 logging.properties 檔案的屬性。