ヘッダーをスキップ
Oracle TimesTen In-Memory Database TTClassesガイド
リリース7.0
E05171-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

TTGlobal(ロギング)

TTGlobalクラスは、TTClassesのロギング機能を提供します。

パブリック・メンバー

なし

パブリック・メソッド

メソッド
説明
TTClassesのロギング情報の送信先を指定します。
TTClassesロギングの冗長レベルを指定します。
TTClassesロギングを無効にします。

setLogStream

static void setLogStream (ostream & str)

TTClassesのロギング情報の送信先を指定します。デフォルトでは、TTClassesロギングが有効な場合、stderrにログが記録されます。このメソッドを使用すると、ユーザー・アプリケーションはファイル(または他の任意のostream &)にログを記録できます。

例3.8

次の例に、アプリケーションがapp_log.txtというテキスト・ファイルに記録する方法を示します。

ofstream log_file ("app_log.txt") ;

TTGlobal::setLogStream (log_file) ;

setLogLevel

static void setLogLevel (TTLog::TTLOG_LEVEL level)

このメソッドは、TTClassesロギングの冗長レベルを指定します。表3.4に、TTClassesのロギング・レベルを示します。これらのレベルは累積されます。

表3.4 TTClassesのロギング・レベル
ロギング・レベル
説明
TTLog::TTLOG_NIL
ロギングは行われません。
TTLog::TTLOG_FATAL_ERR
致命的エラー(TTClassesメソッドの重大な誤用)が記録されます。
TTLog::TTLOG_ERR
+すべてのエラー(SQL_ERRORリターン・コードなど)が記録されます。
TTLog::TTLOG_WARN
+警告とTTCmd::Prepareに対するすべてのコールが記録されます(準備中のSQL文字列も含む)。データベース・オプティマイザのすべての問合せ計画が出力されます。(デフォルトのロギング・レベル)
TTLog::TTLOG_INFO
+情報メッセージ(TTCmdおよびTTConnectionのほとんどのメソッドに対するコールなど)が記録されます。該当するSQL文字列も含まれます。
TTLog::TTLOG_DEBUG
+デバッグ用の追加情報(TTCmd::Executeに対する各コールにバインドされたすべてのパラメータの値など)が記録されます。

たとえば、ロギング・レベルをTTLog::TTLOG_ERRに設定するには、次の行をプログラムに追加します。

TTGlobal::setLogLevel (TTLog::TTLOG_ERR) ;

disableLogging

static void disableLogging()

このメソッドは、すべてのTTClassesロギングを無効にします。次の2つの文は同一であることに注意してください。

TTGlobal::disableLogging() ;

TTGlobal::setLogLevel (TTLog::TTLOG_NIL) ;

TTGlobalの使用

TTGlobalロギング機能は、TTClassesプログラム内で発生する問題のデバッグに非常に役立つことがあります。ただし、冗長度の高いロギング・レベル(TTLog::TTLOG_INFOおよびTTLog::TTLOG_DEBUG)の場合は、膨大な出力が生成される可能性があることに注意してください。これらのロギング・レベルは、本番の稼働時ではなく、開発時または不具合の診断時に使用してください。

マルチスレッド・プログラムからロギングする場合は、ディスクへの書込み時に、異なるプログラム・スレッドのログ出力が混合されるという問題が発生するおそれがあります。この問題を軽減するには、ios_base::unitbuf iostreamマニピュレータでostreamバッファリングを無効にします。

例3.9に、ロギング・レベルTTLog::TTLOG_ERRでTTClassesロギングをファイルapp_log.txtに送信する方法を示します。この例の場合、このファイルへのロギングはバッファリングされないため、異なるスレッドの出力が混合されることはありません。

例3.9

ofstream log_file ("app_log.txt") ;

log_file << std::ios_base::unitbuf ;

TTGlobal::setLogStream (log_file) ;

TTGlobal::setLogLevel (TTLog::TTLOG_ERR) ;

TTGlobalの使用方法の詳細は、「TTClassesのロギング」を参照してください。