• 締切済み

ログファイルの内容を取得したい

Widnwosサーバ上で稼動しているアプリケーションから出力されるログがあります。 このログを毎日チェックしたいと思っているのですが、サーバが複数台あり、それぞれにログインして確認するのは面倒なため、ログファイルの内容から必要な情報をテキストファイルに書き出して、それをメールに添付して管理者宛に送信するようにしたいと考えています。 プログラム初心者のため、どのように作っていけばわかりません。 DOSで作れるものなのか、VBScriptで作れるものなのか、以下の内容からアドバイスをお願いします。 A~Cサーバ上のログ:Status1.log~Status10.log ログファイルの中身 ####################################### Status1.log 2008/09/11 00:30 "Data1 Copy Succeeded" 01:00 ####################################### ####################################### Status2.log 2008/09/11 01:00 "Data1 Copy Succeeded" 01:30 ####################################### 出力結果としてメール送付したい内容 +++++++++++++++++++++++++++++++ここからがファイルの内容+++++++++++++++++++++++++++++++++++++++++ Aサーバ 処理日   開始時間 終了時間   ステータス      2008/09/11 00:30     01:00   "Data1 Copy Succeeded" 2008/09/11 01:00     01:30   "Data2 Copy Succeeded" ・ ・ ・ ・ ・ 2008/09/11 04:30     05:00   "Data10 Copy Succeeded" #################################################### Bサーバ 処理日   開始時間 終了時間   ステータス      2008/09/11 00:30     01:00   "Data1 Copy Succeeded" 2008/09/11 01:00     01:30   "Data2 Copy Succeeded" ・ ・ ・ ・ ・ 2008/09/11 04:30     05:00   "Data10 Copy Succeeded" +++++++++++++++++++++++++++++++ここまでがファイルの内容+++++++++++++++++++++++++++++++++++++++++ 要するに、処理開始時間・終了時間ステータスを各ログファイルから取得し、時系列的にならべてテキストファイルに落とし込みたいと思っています。 複数サーバあり、それぞれのサーバで取得したテキストファイルを1つのメールに添付して送信することが出来れば、なおのこといいのですが、そのようなことも可能でしょうか。 よろしくお願いします。

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

ANo.1 補足への回答です。 >特定行の値を取得するというのと、特定の文字列が含まれる行を取得するというのは、どのようにすればよいでしょうか。 「特定行」というのは、テキストファイルの任意の行と解釈しますと、簡単にはファイルを1行ずつ読み進めればよいでしょう。FileSystemObjectの ReadLineメソッドを見て下さい。 「特定の文字列が含まれる」かは、VBScriptでしたらInStr関数などで判定できます。 Windows Script 5.6ドキュメントを一通り読むことをおすすめします。

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

掲示板ではやりとりするのに限りがあり、完成までお付き合いはできないと思いますがアドバイス申し上げます。 ご要望のことはWindows2000以降でしたら標準機能のWSH VBScriptやJScriptを使って実現できます。しかしこれまで全くスクリプトを書いたことがないのでしたら、下記などのMSの資料を一通り読んで一部分から試してみることをおすすめします。本件のポイントはファイル名を生成するための文字列処理やファイル処理を行うためのFileSystemObjectになると思います。 Windows Script http://www.microsoft.com/japan/msdn/scripting/ Microsoft Windows スクリプト テクノロジ http://msdn.microsoft.com/ja-jp/library/cc392483.aspx スクリプトセンター テキスト ファイル http://www.microsoft.com/japan/technet/scriptcenter/scripts/misc/text/default.mspx 上は基本として、本件を実現する手順を整理して考えてみます。例えば、 (1)A~Cサーバについて、  (2)ログを参照する。  (3)ログを編集してテキストファイルに落とし込む。 (4)メールに添付して送信する。 (1)(2)は、現在、パスワード等を入力することなく各サーバに接続でき、ファイルを参照できているのでしたら問題ありません。FileSystemObjectのCreateTextFileで、"\\サーバ名\共有名…"を指定して開けます。あるいは共有フォルダをネットワークドライブに割り当てているなら、そのドライブ名を使ってもよいでしょう。いずれにしても、まずはAサーバのStatus1.logファイルを開いて表示するスクリプトを試してはどうでしょうか。それが第一歩です。 (3)はテキストの取り出しと連結の組み合わせです。 (4)はスクリプトから「CDO」を使って送信できます。「CDO メール」などで検索してみて下さい。サンプルが見つかります。 なお、せっかくスクリプトを作るのでしたら異常値(指定時刻のログが記録されていないとかSucceededでないとか)をチェックして、メールの件名などに表示してはどうでしょうか。異常が表示されていたら添付ファイルを見て調査を始めるようにすれば便利でしょう。

isis_lucid
質問者

お礼

回答ありがとうございました。 また、御礼が遅くなり申し訳ありません。 詳しく説明してくださり、感謝です。 アドバイスを元に、サーバのStatus1.logファイルを開いて表示するスクリプトを試してみたいと思います。

isis_lucid
質問者

補足

複数ファイルの内容を取得してひとつのファイル内に書き込んでメールを送信するというのは出来ました。 特定行の値を取得するというのと、特定の文字列が含まれる行を取得するというのは、どのようにすればよいでしょうか。 Googleで検索してみたんですけど、当てはまるものが探せませんでした。