Python言語のロギングとランタイム情報
この例では、次のファイル名を使用する: 'logrun.py
コード
この例のコードは、一般的には使用されないかもしれない機能を探っている。 ログの記録は、AEの実行を追跡するのに役立つ。 使用するには、AEがログマスクで登録され、nzudxdbgを介してロギングが有効になっていなければならない。 NPS システムが起動したウィンドウでシステム・ログ・メッセージを受信するには、NPS を'-i'オプションで起動する必要がある(例えば、'nzstart-i') これにより、NPSプロセスは端末に接続されたままとなる。 ランタイム情報は、データスライス数、SPU 数、実行場所など、NPS システムに関する統計情報を提供する。
import nzae
class LogRunAe(nzae.Ae):
def _run(self):
for row in self:
pass
self.output("Dataslice ID: " + repr(self.getDatasliceId()))
self.output("Hardware ID: " + repr(self.getHardwareId()))
self.output("Number of Data Slices: " +
repr(self.getNumberOfDataSlices()))
self.output("Number of Spus: " + repr(self.getNumberOfSpus()))
self.output("Suggested Memory Limit: " +
repr(self.getSuggestedMemoryLimit()))
self.output("Transaction ID: " + repr(self.getTransactionId()))
self.output("Is A User Query: " + repr(self.isAUserQuery()))
self.output("Is Logging Enabled: " + repr(self.isLoggingEnabled()))
self.output("Is Running on a spu: " + repr(self.isRunningOnSpu()))
self.output("Is Running in Postgres: " +
repr(self.isRunningInPostgres()))
self.output("Is Running in DBOS: " + repr(self.isRunningInDbos()))
self.output("Is a UDA: " + repr(self.isUda()))
self.output("Is a UDF: " + repr(self.isUdf()))
self.output("Is a UDTF: " + repr(self.isUdtf()))
self.log("Here is some logging text!", self.LOG_LEVEL__DEBUG)
self.log("Here is some more logging text!", self.LOG_LEVEL__DEBUG)
LogRunAe.run()
デプロイメント
スクリプトをデプロイする:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./logrun.py --version 3
登録
memオプションと-maskオプションを使ってサンプルを登録する。 maskオプションはDEBUGのロギングを有効にし、-memオプションはメモリーのランタイム情報を設定する。
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
--template udtf --exe logrun.py --sig "log_run(int4)" \
--return "table(text varchar(1000))" --mask debug --mem 100k
実行中
実行する前に、'nzudxdbg:実行してロギングを有効にする。
nzudxdbg
Processing 1 spus
.
done
Processing host
done
nzsqlでクエリを実行する:
SELECT * FROM TABLE WITH FINAL(log_run(1));
TEXT
-------------------------------
Dataslice ID: 0
Hardware ID: 0
Number of DATA Slices: 4
Number of Spus: 1
Suggested Memory LIMIT: 102400
Transaction ID: 8520
IS A User Query: True
IS Logging Enabled: True
IS Running ON a spu: False
IS Running IN Postgres: False
IS Running IN DBOS: True
IS a UDA: False
IS a UDF: False
IS a UDTF: True
(14 rows)
NPS システムのログは、NPS システムが起動されたウィンドウに表示されます:
05-05-10 14:33:18 (dbos.18728) [d,udx ] Here is some logging text!
05-05-10 14:33:18 (dbos.18728) [d,udx ] Here is some more logging text