次の方法で共有


ドライバ操作のトレース

Microsoft SQL Server 2005 JDBC Driver をアプリケーションで使用すると、トレース (またはログ記録) を使用して JDBC ドライバで発生した問題の解決に役立てることができます。 トレースを有効にするため、JDBC ドライバでは java.util.logging でログ記録 API を使用しています。この API には、Logger および LogRecord オブジェクトを作成するための一連のクラスが用意されています。

注意

JDBC ドライバに含まれているネイティブのコンポーネント sqljdbc_xa.dll については、Built-In Diagnostics (BID) フレームワークを使用してトレースを有効にしています。 BID の詳細については、SQL Server 2005 のデータ アクセス トレースに関するページ (英語ページの可能性があります) を参照してください。

アプリケーションを開発するとき、Logger オブジェクトを呼び出すことができます。このオブジェクトは、LogRecord オブジェクトを順に作成し、作成されたこれらのオブジェクトは Handler オブジェクトに渡されて処理されます。Logger および Handler オブジェクトは、いずれもログ記録のレベルを使用し、どの LogRecords を処理するかを管理することができます。また、オプションでログ記録フィルタを使用することもできます。 ログの記録が完了すると、Handler オブジェクトは、Formatter オブジェクトを使用してオプションでログ情報を公開することができます。

既定では、java.util.logging フレームワークは出力をファイルに書き込みます。 この出力ログファイルは、JDBC ドライバが動作しているコンテキストについて書き込みアクセス許可を持つ必要があります。

注意

プログラムをトレースするためのさまざまなログ記録オブジェクトの使用の詳細については、Sun Microsystems の Web サイトで 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 パケット内のトークンのみを記録しますが、TDS.DATA カテゴリほど冗長ではありません。

XA

SQLServerXAConnectionSQLServerXAResource、および SQLServerXADataSource クラスのすべての XA トランザクションについてメッセージを記録します。 既定のログ記録のレベルは FINE です。

SQLServerDataSource

SQLServerDataSourceSQLServerConnectionPoolDataSource、および 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 ランタイム環境 (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

注意

java.util.logging に含まれる LogManager オブジェクトを使用して、 logging.properties ファイルでプロパティを設定することができます。

参照

その他のリソース

JDBC ドライバで発生した問題の診断