ページの先頭行へ戻る
Systemwalker Centric Manager API・スクリプトガイド

4.66 opfmt()関数

機能説明

opfmt()関数は、“ラベル:エラー種別:メッセージテキスト”の形式でメッセージを作成し、そのメッセージを指定したstreamに出力するとともに、システム監視エージェントへメッセージを通知します。

ラベルの指定は、opsetlabel()関数によって行います。ラベルが指定されない場合、“エラー種別:メッセージテキスト”の形式でメッセージが作成されます。

システム監視エージェント未起動時は、メッセージ一時保存ファイルに保存され、システム監視エージェント起動時に読み込まれます。

呼び出し形式

#include <opfmt.h>
int opfmt(FILE *stream, long flags, char *format, ... /*args*/);

パラメタ

stream:

出力先のファイルポインタを指定します。streamにNULLを指定した場合は、システム監視エージェントだけに通知されます。

flags:

作成するメッセージの形式、メッセージカタログへのアクセスの有無、およびエラー種別を指定します。
flagsは複数指定できますが、以下の各グループから1つずつしか指定できません。

メッセージ作成形式フラグ:

どのようなメッセージを作成するか指定します。

MM_NOSTD:

“ラベル:エラー種別:メッセージテキスト”形式ではなく、メッセージテキストだけがメッセージとして通知されます。MM_NOSTDが指定された場合、エラー種別フラグは無視されます。

MM_STD:

“ラベル:エラー種別:メッセージテキスト”形式でメッセージが作成されます。メッセージ作成形式フラグが指定されない場合、省略値はMM_STDです。

カタログアクセスフラグ:【UNIX】

メッセージカタログからメッセージテキストの取り出しを行うか行わないかの指定をします。

MM_NOGET:

メッセージカタログからメッセージテキストの取り出しを行いません。formatに指定された文字列が、そのままメッセージテキストとして使用されます。

MM_GET:

メッセージカタログからメッセージテキストの取り出しを行います。カタログアクセスフラグが指定されない場合、省略値はMM_GETです。

エラー種別フラグ:

作成されるエラーメッセージのエラー種別(重要度)を指定します。エラー種別フラグが指定されない場合、省略値はMM_ERRORです。指定される値により、エラー種別と重要度は以下のようになります。

  • Windows版

    指定するエラー種別フラグ

    エラー種別

    重要度

    MM_HALT

    HALT

    最重要

    MM_ERROR

    ERROR

    重要

    MM_WARNING

    WARNING

    警告

    MM_NOTICE

    INFO

    通知

    MM_INFO

    INFO

    一般

  • UNIX版

    指定するエラー種別フラグ

    エラー種別

    重要度

    MM_HALT

    停止

    最重要

    MM_ERROR

    エラー

    重要

    MM_WARNING

    警告

    警告

    MM_NOTICE

    情報

    通知

    MM_INFO

    情報

    一般

format:

メッセージテキストを指定します。

【Windowsの場合】

メッセージテキストは、printf()関数と同じ形式で指定します。メッセージテキストが決定できない場合は、メッセージテキスト文字列として、“Message not found!!\n”が使用されます。

args:

formatで指定した、printf形式のメッセージテキストに対し、必要な引数を指定します。formatの指定に対して、argsの数が多い場合は、余分なargsは無視されます。formatの指定に対してargsの数が少ない場合は、その結果は不定です。

【UNIXの場合】

メッセージカタログの指定、および初期値のメッセージテキストをシステムが提供しているprintf()関数と同じ形式で指定します。システムが提供しているprintf()関数についての詳細は、printf(3s)のマニュアルページを参照してください。
formatには、以下の形式のようにコロン(:)でつないだ1つの文字列で指定します。

  • メッセージカタログを指定する場合

    catalog:msgnum:deftext
  • 初期値のメッセージカタログを指定する場合

    :msgnum:deftext
catalog:

メッセージカタログ名を指定します。catalogは、14バイト以内の文字列を指定してください。これらの文字列には、NULL(\0)、スラッシュ(/)、およびコロン(:)は使用できません。
catalogは、opsetcat()関数で初期値を指定することができます。opsetcat()関数でメッセージカタログが指定されている場合、catalogは省略することができます。ただし、msgnumの直前に付くコロン(:)は省略してはいけません。opsetcat()関数についての詳細は“opsetcat()関数”を参照してください。

msgnum:

catalogで指定した、メッセージカタログの取り出したいメッセージテキスト番号を指定します。

deftext:

catalogで指定した、カタログからメッセージテキストが取り出せない場合の初期値のメッセージテキストを指定します。
環境変数LC_MESSAGES、またはLANGに設定されたロケールに、catalogで指定したメッセージカタログが存在しない場合、またはmsgnumが範囲外の場合、opfmt()関数は、Cロケールからテキストを取り出そうとします。これに失敗すると、opfmt()関数は、deftextをメッセージテキストとして使用します。formatが正しい形式で指定されず、メッセージテキストが決定できない場合は、メッセージテキスト文字列として、“Message not found!!\n”が使用されます。

args:

formatで指定した、printf形式のメッセージテキストに対し、必要な引数を指定します。formatの指定に対して、argsの数が多い場合は、余分なargsは無視されます。formatの指定に対してargsの数が少ない場合は、その結果は不定です。

注意

“%”をメッセージテキストとして使用する場合は、2つ連続させて(“%%”)記述します。

参照

以下のシステム監視のAPIを参照してください。

復帰値

0以上

正常終了。通知したメッセージのバイト数。

-1

異常終了。

API格納場所

メッセージ作成のAPI”を参照してください。

注意事項

運用管理サーバでクラスタ待機系の監視を行っている場合、待機系のシステムからopfmt関数を使用してメッセージを出力しても運用系システムでのメッセージ監視はできません。なお、待機系時に実行したopfmt関数の結果は、APIを使用したアプリケーションを実行したシステムが運用系になったときにメッセージが通知されます。

UNIXの場合は、以下の点にも注意が必要です。

使用例

使用例を以下に示します。

opsetlabel("LABEL");
opfmt(stderr, MM_INFO, "test:23:test message 1 --%s\n",strerror(errno));

実行結果/出力形式

[通知メッセージ]

LABEL: INFO: test message 1 --No such file or directory