dataStore.startRequestLog( ) メソッドは、クライアント側でORDA リクエストのログを開始します。
このメソッドはリモート側の4D で呼び出される必要があり、そうでない場合には何もしません。これはクライアント/サーバー環境でのデバッグを想定して設計されています。
ORDA リクエストログはメソッドに渡された引数によってファイルまたはメモリに送ることができます:
- File コマンドで作成されたfile オブジェクトを渡した場合、ログデータはオブジェクト(JSON フォーマット)のコレクションとしてこのファイルに書き込まれていきます。それぞれのオブジェクトはリクエストを表します。
ファイルがまだ存在しない場合、ファイルが作成されます。もしファイルが既に存在する場合、新しいログデータはそこに追加されていきます。
メモリへのログが既に始まっている時に、dataStore.startRequestLog( ) がfile 引数つきで呼び出された場合、メモリに記録されていたログは停止され消去されます。
注: JSON 評価を実行するためには、ファイルの終わりに手動で" ] " 文字を追加する必要があります。
- reqNum (倍長整数) 引数に数値を渡した場合、メモリ内のログは(あれば)消去され、新しいログが初期化されます。リクエスト数がreqNum 引数で指定された数に到達するまではログはメモリに保管され、到達した場合には古いエントリーから消去されていきます(FIFO スタック)。
ファイルへのログが既に始まっている時に、dataStore.startRequestLog( ) がreqNum 引数つきで呼び出された場合、ファイルへのログは停止されます。
- 引数を何も渡さなかった場合、ログはメモリに記録されていきます。dataStore.startRequestLog( ) が事前にreqNum 引数つきで呼び出されていた場合(ただしstopRequestLog( ) の前)、ログデータはログが次回消去されるかまたはstopRequestLog() が呼び出されるまで、メモリ内にスタックされます。
ORDA リクエストのフォーマットの詳細については、ORDA クライアントリクエスト の章を参照してください。
ORDA クライアントリクエストをファイルに記録し、ログシーケンス番号を使用したい場合を考えます:
C_OBJECT($e;$file)
$file:=File("/LOGS/ORDARequests.txt")
SET DATABASE PARAMETER(Client Log Recording;1)
ds.startRequestLog($file)
$e:=ds.Persons.get(30001)
ds.stopRequestLog()
SET DATABASE PARAMETER(Client Log Recording;0)
ORDA クライアントリクエストをメモリに記録していきたい場合を考えます:
C_OBJECT($es)
C_COLLECTION($log)
ds.startRequestLog(3)
$es:=ds.Persons.query("name=:1";"Marie")
$es:=ds.Persons.query("name IN :1";New collection("Marie"))
$es:=ds.Persons.query("name=:1";"So@")
$log:=ds.getRequestLog()
ALERT("The longest request lasted: "+String($log.max("duration"))+" ms")