デバッグとトレース
JDBC ドライバーのロギングを Apache Log4j 構成ファイルで有効にします。
このタスクについて
JDBC ドライバーでは、Apache Log4j2 (https://logging.apache.org/log4j/2.x/) を使用してロギングを実装します。
注: JDBC ドライバーのロギング情報を Studio の「Server Trace」ペインに含めるには、JDBC の TraceBrowseAppender プロパティーを有効にします。
手順
Log4j 構成ファイル (https://logging.apache.org/log4j/2.x/manual/configuration.html) を開き、以下のいずれかの方法を選択してロギングを実装します。
- ディレクトリーとフォルダーの場所を CLASSPATH に追加します。
- LogConfiguration 接続プロパティーを、Log4j 構成ファイルを指すファイル・パスか URI に設定します。
以下は、JDBC ドライバーのインストール ZIP ファイルに含まれているサンプルの log4j2.xml 構成ファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="5">
<Appenders>
<Console name="Console" …>
<PatternLayout … />
</Console>
<RollingRandomAccessFile name="RollingFile" …>
<PatternLayout>
<Pattern>…</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy … />
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="WARN">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
</Root>
<Logger name="com.rs.jdbc.dv.DvDataSource"
level="WARN" />
<Logger name="com.rs.jdbc.dv.log.DvThreadsStateLogger"
level="WARN" />
<Logger name="javax.management"
level="WARN" />
<Logger name="sun.rmi"
level="WARN" />
<Logger name="com.rs.dv.util.LoggerEnvironmentReporter"
level="OFF" />
</Loggers>
</Configuration>
このサンプル構成ファイルでは、構成全体の状況とルート・ロガーのレベルが WARN に設定されている (<Configuration status=="WARN">;<Root level="WARN">) 場合は、何もログに記録されません。構成のレベルを TRACE に設定すると、Log4j では、構成対象の Log4j 自体に関するログが記録されます。構成ファイルのデバッグが必要な場合にこれが役立ちます。 ルート・ロガーのレベルを DEBUG に設定すると、ドライバーではより詳しい情報がログに記録され、このレベルを TRACE に設定すると、JDBC API の入口と出口のトレースが可能になります。詳しくは、次の URL を参照してください。
https://logging.apache.org/log4j/2.x/manual/flowtracing.html
各ドライバー実装クラスにはロガーがあります。ロガー名は完全修飾クラス名から派生した名前です。これらの各ロガーのロギング・レベルは個別に変更できます。
デフォルトでは、ルート・レベルを TRACE に設定すると、バッファーの 16 進ダンプがログに記録されます。 バッファー・トレースを無効にする一方で API ロギングを有効にする場合は、Log4j フィルターを使用します。
次の例は、JDBC 構成ファイルに対してフィルター DV.BUFFER を定義する方法を示しています。
<Loggers>
…
<Filters>
<MarkerFilter marker="DV.BUFFER"
onMatch="DENY" onMismatch="NEUTRAL" />
</Filters>
</Loggers>
フィルターは、マーカー属性に適切な値を設定することによって通信と SQL 操作にも適用できます。 以下のフィルターから選択できます。
- DV.BUFFER
- DV.BUFFER.HEADER
- DV.BUFFER.PARAM
- DV.BUFFER.COMPRESSED
- DV.BUFFER.DECOMPRESSED
- DV.BUFFER.UNCOMPRESSED
- DV.BUFFER.DESCRIPTION
- DV.BUFFER.DESCRIPTION.CONNECT
- DV.COMM
- DV.COMM.SOCKET
- DV.SQL
- DV.SQL.PREPARE.USER
- DV.SQL.BATCH.USER
- DV.SQL.BATCH.SERVER
- DV.SQL.QUERY.USER
- DV.SQL.QUERY.SERVER
- DV.SQL.QUERY.POST
- DV.SQL.UPDATE.USER
- DV.SQL.UPDATE.SERVER