SELECT
のような UniVerse 動詞をカスタム基本プログラムでラップして、経過時間などのメトリックを記録する巧妙な方法を概説した記事をどこかで見たのを覚えています。簡単な答えは、その記事に精通している場合は、そのリンクを共有することです.
それ以外の場合は、そのようなラッパーを作成する適切な方法を例示するサンプル コードを共有していただければ幸いです。
SELECT
いくつかのデータをファイルに書き込み、ユーザー、関連するファイル、選択の実行にかかった時間、ステートメントに含まれるフレーズなどをキャプチャしたいと考えています。このデータを分析とレポートのために別のシステムに送信する予定です。これにより、さまざまな選択がどの程度うまく機能しているかをよりよく視覚化できるようになります。
お時間をいただきありがとうございます。解決策についてご相談できることを楽しみにしています。
アップデート!
Van の回答を見た後、ステートメントの処理時間を記録することに最も関心があり、純粋にログ記録の目的で他の情報を収集することに最も関心があることを明確にする必要があります。私の目標は、すべてを壊してしまわないように透明にすることです。
私の論理は次のようなものです:
- ステートメントが実行され、ラッパー プログラムが現在の時刻を記録します。
- 単純なバニラ文はラッパーによって実行されます。
- 選択が完了すると、ラッパーは現在の時刻を再び記録し、開始時刻との差を記録します。
- ここにいる間に、さまざまな
SYSTEM(x)
and/or@
値を使用して、ユーザー名と、場合によってはレコード数を取得します。- いくつかのロジックを使用してステートメントを解析し、その他の興味深い情報を記録します。
- ID を増分して、興味深い値を1 つのログ ファイルに書き込みます。
- ユーザーまたはプロシージャは気づかず、いつものように選択リストになります(どういうわけか...ここに魔法を挿入してください)
- 他のいくつかの分離されたプロセスは、定期的なバッチで各レコードをレポート システムにフィードします。
それはもっと理にかなっていますか?