12.4 UCPでのロギングの概要

UCPは、JDKロギング機能(java.util.logging)を利用しています。ロギングは、デフォルトでは無効になっており、ログ・メッセージを出力するために構成する必要があります。ロギングは、ログ構成ファイルを使用するか、APIレベルの構成を使用して、構成できます。

注意:

デフォルトのログ・レベルはnullです。そのため、デフォルトでは親のログ出力でのログ・レベルが必ず使用されます。

12.4.1 ロギング・プロパティ・ファイルの使用方法

ロギングは、プロパティ・ファイルを使用して構成できます。プロパティ・ファイルの場所は、ロギング構成ファイル・プロパティのJavaプロパティとして設定する必要があります。次に例を示します。

java -Djava.util.logging.config.file=log.properties

ロギング・プロパティ・ファイルは、ログの書込みに使用するハンドラ、ログの書式設定に使用するフォーマッタ、デフォルトのログ・レベルの他、特定のパッケージおよびクラスのログ・レベルを定義します。次に例を示します。

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

oracle.ucp.level = FINEST
oracle.ucp.jdbc.PoolDataSource = WARNING

カスタム・フォーマッタは、UCPに同梱されており、フォーマッタ・プロパティの値として入力できます。次に例を示します。

java.util.logging.ConsoleHandler.formatter = oracle.ucp.util.logging.UCPFormatter

Oracle Technology Network(OTN)から、UCPに用意されているucpdemos.jarファイルをダウンロードすることもできます。このファイルにはサンプルのロギング・プロパティ・ファイルのリストがあります。たとえば、このファイルには、高速接続フェイルオーバー(FCF)機能のトラブルシューティングに使用できるロギング・プロパティ・ファイルがあります。

12.4.2 UCPおよびJDK APIの使用

ロギングは、UCP APIまたはJDK APIのいずれかを使用して動的に構成できます。UCP APIを使用する場合は、接続プール・マネージャを使用してロギングを構成します。JDKを使用する場合は、java.util.logging実装を使用してロギングを構成します。

次の例では、UCP APIを使用してロギングを構成しています。

UniversalConnectionPoolManager mgr = UniversalConnectionPoolManagerImpl.
getUniversalConnectionPoolManager();

mgr.setLogLevel(Level.FINE);

次の例では、JDKロギング実装を直接使用しています。

Logger.getLogger("oracle.ucp").setLevel(Level.FINEST);
Logger.getLogger("oracle.ucp.jdbc.PoolDataSource").setLevel(Level.FINEST);

12.4.3 実行時における機能固有のロギングの有効化または無効化

Oracle Database 12cリリース2 (12.2.0.1)以降、UCPでは実行時に選択した機能に対してロギングの有効化または無効化がサポートされています。たとえば、ロード・バランシング機能のみのロギングを有効にして、UCPの他の機能のロギングを無効にすることができます。また、同じ実行で高速フェイルオーバー機能のロギングを有効にして、ロード・バランシング機能のロギングを無効にすることもできます。

すべての機能のロギングはデフォルトで有効になっています。

UCPのロギングの切替え機能はOracleDiagnosabilityMBeanに含まれています。このBeanを使用するには、JConsoleを起動してアプリケーションに接続します。

サポートされている機能の表示

サポートされている機能のリストを表示するには、次のメソッドを使用します。

getTraceController().getSupportedFeatures()
有効になっている機能の表示

現在有効になっている機能のリストを表示するには、次のメソッドを使用します。

getTraceController().getEnabledFeatures()
機能のロギングの有効化

特定の機能またはすべての機能のロギングを有効にするには、次のようにtraceメソッドを使用します。

trace(boolean enable, String feature_name)
trace(boolean enable, ALL)
機能のロギングの無効化

特定の機能またはすべての機能のロギングを無効にするには、次のようにtraceメソッドを使用します。

trace(boolean disable, String feature_name)
trace(boolean disable, ALL)
ロギングの一時停止および再開

ロギングを一時停止および再開するには、それぞれ、次のメソッドを使用します。

suspend()
resume()

12.4.4 機能固有のロギングのロギング・プロパティ・ファイルの使用について

Oracle Database 12cリリース2 (12.2.0.1)以降、ロギング・プロパティ・ファイルにプロパティを追加することにより、特定の機能のロギングを有効または無効にすることができます。ロギングはデフォルトですべての機能について有効になっています。そうでない場合、次の構文(clio.feature.all = on)を使用してすべての機能のロギングを有効にすることができます。ロギングの機能固有の有効化では、次の項で示されているようにプロパティを使用できます。

機能ベース粒度のサポートされている機能

clio.feature.pool_statistics          = on
clio.feature.check_in                 = on
clio.feature.check_out                = on
clio.feature.labeling                 = on
clio.feature.conn_construction        = on
clio.feature.conn_destruction         = on
clio.feature.high_availability        = on
clio.feature.load_balancing           = on
clio.feature.transaction_affinity     = on
clio.feature.web_affinity            = on
clio.feature.data_affinity           = on
clio.feature.conn_harvesting          = on
clio.feature.ttl_conn_timeout         = on
clio.feature.abandoned_conn_timeout   = on
clio.feature.admin                    = on
clio.feature.sharding                 = on

12.4.5 サポートされるログ・レベル

次に、JDBCでサポートされる各ログ・レベルを示します。FINEよりも低いレベルでは、ユーザーにとって重要とはかぎらない出力が生成されます。FINERよりも低いレベルでは、非常に大量の出力が生成されます。

  • INTERNAL_ERROR – 内部エラー

  • SEVERE – SQL例外

  • WARNING: SQL警告およびその他の隠れた問題

  • INFO: パブリック・イベント(接続の試行やOracle RACイベントなど)

  • CONFIG – SQL文

  • FINE – パブリックAPI

  • TRACE_10: 内部イベント

  • FINER – 内部API

  • TRACE_20: 内部デバッグ

  • TRACE_30: 大量の内部API

  • FINEST: 大量の内部デバッグ