ファイル

Q 14
ログ出力機能の実装方法
[内容]
エラーログやアプリケーションログを出力するにはどうすればよいか

A 14
[解決方法]
FileSystemクラスを利用して、エラーログやアプリケーションログの出力機能を
実装する事ができます。
添付のサンプルはパッケージ化されているので、ログ出力したいCRSファイルに
以下パッケージファイルをインポートすることで、ログ出力機能が実装されます。

[サンプルコード]
Package pkg_logexit {
    
    /* ログ用文字列設定 */
    Function errlog_data(ex,e,obj_str){
        /* Sysdate():現在の日時・時刻 */
        /* ex.message:例外の説明文*/
        /* ex.method:例外を起した機能 */
        /* ex.code:例外番号 */
        /* e.from.classname:イベントオブジェクトのクラス名 */
        /* e.from.name:イベントオブジェクトのオブジェクト名 */
        /* e.from.name:イベント名 */
        /* obj_str:その他オブジェクト情報 */
        
        /* ログ出力用文字列生成 */
        var data = str(Sysdate()) + "," + str(ex.message) + "," +
                   str(ex.method) + "," + "例外コード:" + 
                   str(ex.code)   + "," + e.from.classname + "," +
                   e.from.name    + "," + e.eventname + "," + 
                   obj_str + "\r";
        
        /* ファイルの生成 */
        log_out(data,"/errlog_");
    }
    
    Function applog_data(obj_str){
        /* ログ出力用文字列生成 */
        var data = 
        str(Sysdate()) + "," + str(obj_str) + "\r";

        /* ファイルの生成 */
        log_out(data,"/applog_");
    }
    
    /* ログ出力用関数 */
    /* rootフォルダにlog.txtという名称でログファイルを出力 */
    Function log_out(msg,logData){
        /* ファイル名に日付の入ったファイルを生成 */
        var d = sysdate();
        var d2 = str(d, "YYYYMMDD");
        var fs = new FileSystem;
        /* 日付ごとにファイルをわけて出力 */
        var fp = 
            fs.open(logData + d2 + ".txt",FileSystem.OPEN_APPEND);
        fp.write(msg);
        fp.close();
    }
}

  例)Formで上記の機能を呼び出す場合
import "pkg_logexit.crs";
Form Fil_014{
    Button Button1 {
        X = 235;
        Y = 86;
        Width = 125;
        Height = 54;
        
        Function OnGetFocus( e ){
            /* デバック用(アプリケーションログ) */
            pkg_logexit.applog_data("Button1.GetFocus");
            ^.ObjFocus = e.from.name;
        }
        
        Function OnTouch( e ) {
            try{
                /* 強制エラー */
                ^.textbox3.value = "aaa";
            }catch( ex ){
                //.MessageBox(ex.message,"エラー",$IconStop);
                var obj_str = "サンプルエラー";
                /* デバック用(エラーログ) */
                pkg_logexit.errlog_data(ex,e,obj_str);
            }
        }
    }
}

ログ出力するファイルを、日付ごとに分けて発行するような処理になっています。
ファンクション「errlog_data」、「applog_data」は、それぞれログ出力時のデータとなる
文字列を生成します。生成された文字列が書き込まれたファイルは、rootフォルダに
ログを出力します。
※rootフォルダまでのパスは以下マニュアルをご参照ください。
 ・FileSystemクラス

実際の挙動については、CRSファイル形式のサンプル
 「ログ出力機能の実装方法(Fil_014.zip)」
をご確認ください。

管理番号:Fil_014

  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ