ドライバ操作のトレース
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 |
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 ランタイム環境 (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
ファイルでプロパティを設定することができます。