WindowsServer2003にて、あるアプリケーションのログ(ここではdummy.logとします。)
dummy.logの内容は下記のような感じです。
------------------------------------------------------------------------
2#2009-09-15 16:35:02.680#7442#通信#○○手順:S9で受信エラーが発生しました。\r\n
ユーザニモニック(USER )\r\nファイルニモニック(FILE )\r\n
転送方向:着呼集信\r\n回線情報ID(1137)\r\n
回線グループ名(CHAKU )\r\n
回線グループ番号(8)#○○待ちで受信エラーが発生しました。
------------------------------------------------------------------------
ログの先頭には、「2009-09-15 16:35:02」というように当日のタイムスタンプが入ります。
このタイムスタンプを見て、その当日だけの日付のログを全部コピーして、別ファイル名で保存し
その別ファイル名の中の特定の文字列を参照して、文字列があった場合「エラーがありました」
とか、文字列がない場合「エラーはありませんでした」とポップアップ表示させることは可能
でしょうか。
よろしくお願いします。
試しに書いてみました。別ファイル出力はせずに直接確認してますが。
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oText = oFso.OpenTextFile("dummy.log", 1)
Set oReg = new RegExp
oReg.pattern = "エラーが発生" ←目標文字列を正規表現指定
strDate="2009-09-17" ←目標日付を指定
bLogBlock=false
Do Until oText.AtEndOfStream
strLine=oText.ReadLine
If Left(strLine,10) = "----------" Then ←行の先頭10文字が-なら区切り行
bLogBlock=false
ElseIf Left(strLine,10) = strDate Then ←行の先頭が日付に一致したら、そこから区切り行までを検査対象に
bLogBlock=true
ElseIf bLogBlock=true and oReg.Test(strLine)=true Then ←対象行について比較実施
WScript.echo "エラーが発生しました"
Exit Do
End If
Loop
試しに書いてみました。別ファイル出力はせずに直接確認してますが。
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oText = oFso.OpenTextFile("dummy.log", 1)
Set oReg = new RegExp
oReg.pattern = "エラーが発生" ←目標文字列を正規表現指定
strDate="2009-09-17" ←目標日付を指定
bLogBlock=false
Do Until oText.AtEndOfStream
strLine=oText.ReadLine
If Left(strLine,10) = "----------" Then ←行の先頭10文字が-なら区切り行
bLogBlock=false
ElseIf Left(strLine,10) = strDate Then ←行の先頭が日付に一致したら、そこから区切り行までを検査対象に
bLogBlock=true
ElseIf bLogBlock=true and oReg.Test(strLine)=true Then ←対象行について比較実施
WScript.echo "エラーが発生しました"
Exit Do
End If
Loop
ありがとうございます。
strDate="2009-09-17" ←目標日付を指定
目標日付の部分は当日っていうのもできるのでしょうか。
VBScriptでの実現性ということでしたら、できると思います。
FileSystemObjectオブジェクトでログファイルを読む
エラー内容をチェックし、正規表現(RegExp)でログを抜き出して別ファイル出力
といった具合です。
タイムスタンプ毎のエラー内容が複数行にわたっているので、そのブロック単位でどう抜き出すかが考えどころくらいでしょうか。
いずれにしろ、もし作るのであれば、現物のログファイルを見てみないとキチンと動作するものを作るのは難しいと思います。
ありがとうございます。できることはできるのですね。
ありがとうございます。
strDate="2009-09-17" ←目標日付を指定
目標日付の部分は当日っていうのもできるのでしょうか。