備忘録
GeneXus
genexusDay 16

GeneXus Msgコマンドの基本的な使い方

はじめに...

万能なMsgコマンド
その使い方をいくつかご紹介します。

  • 基本的な構文
  • メッセージ出力方法
  • 簡易的なログ出力方法
【環境】
 バージョン     : GeneXus  15U6
 ジェネレーター  : Java     1.8 (jdk1.8.0_141)
 サーバー      : Tomcat   8.5

Msgコマンドとは

Msgコマンド はメッセージを表示/出力したい場合に用いるコマンドです。
Errorコマンドと異なり後続処理は実行します。

警告メッセージを表示します。

構文
Msg( {'msg' | &var} [ , nowait | status ] )

GeneXus Wikiより抜粋

用途別の記述例

画面へメッセージを表示

Rulesの場合
//Transactionオブジェクトでのみ記述可能
Msg("Hello, GeneXus Event xxxx");
Eventsの場合
Event xxxx
    Msg("Hello, GeneXus Event xxxx")
Endevent

Sub 'xxxx_xxx'
    Msg("Hello, GeneXus Sub xxxx_xxx")
Endsub

※Rulesは  ; (セミコロン)で終わらなければいけない  ので注意して下さい。

簡易的なログ出力

Rulesの場合
//Transactionオブジェクトでのみ記述可能
Msg("Hello, GeneXus Event xxxx", status);
Eventsの場合
Event xxxx
    Msg("Hello, GeneXus Event xxxx", status)
Endevent

Sub 'xxxx_xxx'
    Msg("Hello, GeneXus Sub xxxx_xxx", status)
Endsub

※この記述方法では、画面上にメッセージは表示されません

実装例

1、メッセージを表示する

サンプル

スクリーンショット 2017-12-24 22.25.22.png
Events
Event Start
    Msg("Hello, GeneXus")
Endevent

GeneXus_Msg001.gif

2、条件に一致する場合のみメッセージを表示する

サンプル

名前を入力するフィールド・実行ボタンを追加し、必須入力チェックを実装してみます。
sample6.png

変数&Name Varchar(40) をVariablesに定義
スクリーンショット 2017-12-25 1.12.52.png

変数とボタンを配置
sample1.png

イベントを定義
sample2.png

Events
Event 'btn'
    If &Name.IsEmpty()
        Msg("名前は必ず入力してください。")
    Endif
Endevent

3、簡易的なログ出力

サンプル

今回のサーバーであれば以下フォルダ配下に
tomcat<メジャーバージョンNo>-stdout.YYYY-MM-DD.log
というファイルへ出力される
%TOMCAT_HOME%¥logs

sample5.png

sample3.png

Events
Event Start
    Msg("Hello, GeneXus")
    Msg("Event Start log", status)
Endevent

Event Refresh
    Msg("Event Refresh log", status)
    Msg("&Name="+&Name, status)
Endevent

Event 'btn'
    If &Name.IsEmpty()
        Msg("名前は必ず入力してください。")
    Endif
    Refresh
Endevent

正月早々なにをしているのだか...

最後に

Msg("xxxx", status)
は開発中にSDTなどの情報をログ出力し確認したい場合や、
データ取得確認を行う場合に良く用いられる。
ただ、とても 消し忘れ 易い。
サーバーの標準ログ出力ファイルを用いるのであれば、問題ないでしょう。
ログ出力処理が既に存在する場合、ログ出力処理が混在する可能性もある為、ご注意ください。