ee_logprint
形式
ANSI C,C++の形式
#include <eelog.h> int ee_logprint(char *msgid,char *pgm_id, char *string,char *info, EELONG flags)
機能
引数に設定した文字列に,行ヘッダ,メッセージID,および要求元プログラムIDを付けて,メッセージログファイル,syslog,標準出力に出力します。メッセージログファイルの行ヘッダは,プロセスID,メッセージ通番,サービス名,中央処理通番,年月日,時刻です。syslogの行ヘッダは定義で設定します。syslog出力は,flagsに設定した出力レベルが定義に指定した出力レベルと同じか高い場合です。flagsに出力レベルを設定しなかった場合の出力レベルは,1です。
標準出力への出力有無は,次の表のようになります。定義:log_usermsg_consoleにallを指定している場合,flagsに設定する標準出力への出力フラグの設定に関係なく,標準出力へ出力します。
定義: log_msg_console |
定義: log_usermsg_console |
API:flags 標準出力への出力フラグの設定 |
標準出力への出力有無 |
---|---|---|---|
Y(デフォルト) |
all |
有り |
○ |
無し(デフォルト) |
○ |
||
api(デフォルト) |
有り |
○ |
|
無し(デフォルト) |
× |
||
N |
− |
− |
× |
TP1/EEでは,ee_logprint関数で使うメッセージID用に,05000から06999までの範囲の番号を割り当てています。UAPから出力するメッセージIDの番号には,05000から06999までの範囲の値を付けてください。
メッセージテキストに復改文字「\n」を含むメッセージログは,次のように扱います。
メッセージの出力先 |
復改文字「¥n」の扱い |
---|---|
メッセージログファイル |
空白に置き換えて1行で出力する |
syslog |
空白に置き換えて1行で出力する |
標準出力 |
そのまま出力する(「\n」で改行する) |
障害が発生してUAPからメッセージログが出力できない場合でも,ee_logprint関数がリターン値EE_OKで正常に終了することがあります。そのため,メッセージログが抜ける場合があります。メッセージログの抜けは,メッセージログに付けるメッセージログ通番で確認できます。
一つのスレッドから複数回ee_logprint関数を呼び出した場合,メッセージログファイルへの出力順序は保証されます。複数のスレッドから別々にee_logprint関数を呼び出した場合は,呼び出した順にメッセージログファイルに出力されないことがあります。
エラーを検出した場合,エラーの原因を示すメッセージログにee_logprint関数に指定したメッセージを付けて,標準エラー出力に出力します。
UAPで値を設定する引数
●msgid
メッセージログごとに付ける識別子(メッセージID)を設定します。「KFSBnnnnn-x」の形式(11文字)で,末尾にNULL文字を付けてください。
TP1/EEでは,ee_logprint関数で使うメッセージIDの通番(nnnnnの部分)用に,05000〜06999の範囲の番号を割り当てています。UAPから出力するメッセージIDの通番は,05000〜06999の範囲の値にしてください。
●pgm_id
ee_logprint関数を呼び出したUAPを識別する任意の値(要求元プログラムID)を設定します。英数字2文字で,末尾にNULL文字を付けてください。
●string
メッセージログファイルにメッセージログとして出力したい任意の文字列を設定します。最大222文字で,末尾にNULL文字を付けてください。
文字列に改行「\n」が含まれる場合,1行で出力されます。
●info
NULLを設定します。
●flags
syslog出力レベルと標準出力への出力フラグを設定します。
- syslog出力レベルだけを設定する場合
-
syslog出力レベルを表す次のフラグを設定します。
- EENOFLAGS
-
特定のフラグは設定しません。syslog出力レベルはデフォルトの1になります。
- EELOG_FLAG_SYSLOG_L1
-
syslog出力レベルを1にします。
- EELOG_FLAG_SYSLOG_L2
-
syslog出力レベルを2にします。
- EELOG_FLAG_SYSLOG_L3
-
syslog出力レベルを3にします。
- EELOG_FLAG_SYSLOG_L4
-
syslog出力レベルを4にします。
- EELOG_FLAG_SYSLOG_L5
-
syslog出力レベルを5にします。
- EELOG_FLAG_SYSLOG_L6
-
syslog出力レベルを6にします。
- EELOG_FLAG_SYSLOG_NOPRINT
-
メッセージをsyslogに出力しません。
syslog出力レベルは,1が最も高く,6が最も低くなります。flagsに設定した出力レベルがメッセージログ関連定義のlog_syslog_outオペランドに指定した出力レベルと同じか高い場合,syslogにメッセージログが出力されます。flagsに出力レベルを設定しなかった場合の出力レベルは1です。
- syslog出力レベルと標準出力への出力フラグを設定する場合
-
syslog出力レベルフラグとの論理和で設定します。
- EELOG_FLAG_CONSOLE
-
メッセージを標準出力に出力します。
リターン値
リターン値 |
意味 |
---|---|
EE_OK |
正常に終了しました。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
EELOGER_ARGUMENT |
引数に設定した値が間違っています。 |
EELOGER_CONDITION |
メッセージを出力できる状態にありません。 |
EELOGER_EXCLOCK |
メッセージログ機能内の排他設定に失敗しました。 |
EELOGER_EXCUNLOCK |
メッセージログ機能内の排他解除に失敗しました。 |
EELOGER_FILE_OVER |
すべてのメッセージログファイル切り替えに失敗しました。 |
EELOGER_FILEOUT |
メッセージログファイルへの出力に失敗しました。 |
EELOGER_SNPRINTF |
メッセージの組み立てに失敗しました。 |
EELOGER_STDERR |
標準エラー出力に失敗しました。 |
EELOGER_SYSLOG |
syslogへの出力に失敗しました。 |
注意事項
-
ログ出力量が多い場合は,ee_logprint関数のリターンが遅くなります。例えば,障害発生時にメッセージ出力量が著しく多くなると,トランザクション処理時間が長くなります。これはスローダウンの要因になるので,注意してください。
-
ee_logprint関数で標準出力に非ASCII文字を含むメッセージを出力する場合,標準出力に複数の文字コードが混在する可能性があります。この場合は次のどちらかの方法で回避してください。
-
出力メッセージをASCII文字だけにする
-
flagsにEELOG_FLAG_CONSOLEを指定しない
-