dc_logprint
形式
ANSI C,C++の形式
#include <dclog.h> int dc_logprint(char *msgid,char *pgm_id, char *string,char *info, DCLONG color,DCLONG flags)
K&R版 C の形式
#include <dclog.h> int dc_logprint(msgid,pgm_id,string,info,color,flags) char *msgid; char *pgm_id; char *string; char *info; DCLONG color; DCLONG flags;
機能
引数に設定した文字列に,OpenTP1で行ヘッダ,OpenTP1識別子,日時,要求元ノード名,要求元プログラムID,メッセージIDを付けて,メッセージログファイルに出力します。
OpenTP1では,dc_logprint関数で使うメッセージID用に,05000から06999までの範囲の番号を割り当てています。UAPから出力するメッセージIDの番号には,05000から06999までの範囲の値を付けてください。
障害が起こってUAPからメッセージログが出力できない場合でも,dc_logprint関数がDC_OKで正常に終了することがあります。そのためメッセージログが抜ける場合がありますが,メッセージログの抜けはメッセージログに付けるメッセージログ通番で確認できます。
一つのプロセスから複数回dc_logprint関数を呼び出した場合は,メッセージログファイルへの出力順序は保証されます。ただし,複数のプロセスから別々にdc_logprint関数を呼び出した場合は,呼び出した順にメッセージログファイルに出力されない場合があります。
通信障害(DCLOGER_COMM),およびログサービス未起動(DCLOGER_NOT_UP)のエラーが起こった場合は,UAPから出力したメッセージを,そのUAPプロセス上で編集して,標準エラー出力に出力します。このとき,メッセージの終わりには,次に示すエラー要因を示すコードを付けます。
-
E1
ログサービスが未起動であるため,メッセージログファイルに出力できなかったメッセージを示します。
-
E2
通信障害のためメッセージログファイルに出力できなかったメッセージを示します。
- (例)
-
KFCA05201-I SPP1:サービス要求を受け取りました。(E1)
KFCA05410-I SPP1:更新処理を開始します。(E2)
E1,E2以外のエラーを検出した場合,OpenTP1はエラーの原因を示すメッセージログにdc_logprint関数に指定したメッセージIDの番号を付けて,標準エラー出力に出力します。
UAPで値を設定する引数
●msgid
メッセージログごとに付けられる識別子(メッセージID)を設定します。「KFCAn1n2n3n4n5-x」の形式(11文字)で,最後にヌル文字を付けて設定します。UAPから出力する通番(n1n2n3n4n5の部分)には,05000から06999までの間の数値を設定します。
●pgm_id
dc_logprint関数を呼び出したUAPを識別する値(要求元プログラムID)を,ユーザ任意で設定します。英数字2文字で,最後はヌル文字で終わらせて設定します。
●string
メッセージログファイルにメッセージログとして出力したい任意の文字列を設定します。文字列の上限は各OSで次のとおりです。なお,文字列の最後はヌル文字で終わらせてください。
-
Linux:444バイト
-
Linux以外のOS:222バイト
●info
NULLを設定します。
●color
dc_logprint関数で設定したメッセージログをNETMの操作支援端末に出力する場合の,表示色を設定します。次のどれかを設定します。
1…緑
2…赤
3…白
4…青
5…紫
6…空色
7…黄色
上記以外の数値やヌル文字を設定した場合は,緑が仮定されます。
●flags
DCNOFLAGSを設定します。
リターン値
リターン値 |
リターン値(数値) |
意味 |
---|---|---|
DC_OK |
0 |
正常に終了しました。 |
DCLOGER_PARAM_ARGS |
-1900 |
引数に設定した値が間違っています。 |
DCLOGER_COMM |
-1901 |
通信障害が発生したか,またはdc_rpc_open関数が発行されていません。 |
DCLOGER_MEMORY |
-1902 |
メモリが不足しました。 |
DCLOGER_DEFFILE |
-1904 |
システムの環境設定が間違っています。 |
DCLOGER_NOT_UP |
-1905 |
ログサービスが起動していません。 |
DCLOGER_HEADER |
-1906 |
ログサービスがメッセージログに付ける情報を取得したときに,障害が起こりました。 |
注意事項
ログ出力量が多い場合は,dc_logprint関数のリターンが遅くなります。例えば,障害発生時にメッセージ出力量が激しく多くなると,トランザクション処理時間が延びてしまいます。これはスローダウンの要因になりますので,注意してください。