UTF-8 // Service部からアクセスログを取得し、最新のログをファイル先頭になるように入れ替えた // ログファイル(拡張子は .Log)を作成して返す。 // 戻り値先頭は "OK:" または "NG:" の文字列。 :test{ //log open: dir=Dir.Desktop file="debug accLog-dump.log"; //debug: true; Ex:AntiAd: mode="accLog-dump" O:waitId=str["waitId"]; Ex:InputForm.Wait: waitId=str["waitId"] waitSec=30 O:result=strl["rslt"]; if (strl["rslt"].StartsWith{"NG:"} == "true") { put: value="NG: タイムアウトしました。(30[sec])"; end: } //put: value=strl["rslt"]; str["file"]=strl["rslt"].Latter(":"); str["file"]=str["file"].Trim; read open: file=str["file"]; intl[10]=0; while (true) { read text: O:string=strl["aLine"]; if (strl["aLine"].Length < 1) { break; } strl["idx"]="line." intl[10]; str[strl["idx"]]=strl["aLine"]; culc: intl[10]++; } read close: //put: value="Read " intl[10] " Lines."; //注: str["line.0"] はencode指定行 intl["ptr"]=intl[10] -1; //put: value="最大index=" intl["ptr"]; strl["newFile"]=str["file"] "_reversed.Log"; write open: file=strl["newFile"]; write0: "UTF-8\r\n"; while (intl["ptr"] >= 1) { // // 先頭にあったencode指定行は末尾に追加しないので1まで // strl["idx"]="line." intl["ptr"]; write: w=str[strl["idx"]]; write: w="\r\n"; culc: intl["ptr"]--; } write close: O:name=strl["rslt"]; put: value="OK:" strl["rslt"]; end: }