• 締切済み

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

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で検索してみたんですけど、当てはまるものが探せませんでした。

関連するQ&A

  • バッチファイルでログを残す方法。

    現在バッチファイルである処理を行っているのですが、その処理の前後で指定したログファイルに開始ログ、終了ログを残したいのですが方法がわかりません。 どなたかお分かりの方がいらしたらご教授願います。

  • シェルスクリプトでエラー値取得

    Linuxをつかいシェルスクリプトを組んでいます 複数ファイルの存在有無を確認し、問題なければ、 ファイルを作成する処理を作成したいと思っています。 現在つまずいているのが以下の2点です。  (1)複数ファイルが無い場合、エラーとしたいが、「too many arguments」とででしまう。  (2)HASH.tmp情報取得中にエラーとなったらエラーを出したいが、エラー終了ステータス返却処理に流れない。 初めてで色々しらべながらやっていますが、うまくいかず止まってしまいました。 どなたかご助言お願い致します。 (1) #==============================================================================# # データ抽出用sqlファイル存在確認 # CSVファイルが無かったらエラーを出したい。 # 終了ステータス返却 # 終了ステータスが"0"以外の場合は、"1"を返却する #==============================================================================# if [ ! -f "${DATA_DIR}/"*.csv ]; then # ログ出力 OUT_MSG_LOG -E "抽出ファイルが存在しません。" OUT_MSG_LOG -E "抽出シェル - 終了 終了ステータス :1" OUT_ACT_LOG SH 12 "" OUT_ACT_LOG SH 02 "" exit 1 fi (2) #==============================================================================# # ハッシュ情報取得処理 #==============================================================================# mktemp ${DATA_DIR}/HASH.tmp >/dev/null for arg in *.csv do md5sum ${arg} | awk '{printf("%s,%s\n",$2,$1)}' >> HASH.tmp done #==============================================================================# # 終了ステータス取得 #==============================================================================# RS=$? #==============================================================================# # エラー終了ステータス返却 # 終了ステータスが"0"以外の場合は、"1"を返却する #==============================================================================# if [ ${RS} -ne 0 ]; then # ログ出力 OUT_MSG_LOG -E "抽出処理実行中にエラーが発生しました。" OUT_MSG_LOG -E "抽出シェル - 終了 終了ステータス :${RS}" OUT_ACT_LOG SH 12 "" OUT_ACT_LOG SH 02 "" exit 1 fi

  • ログファイルの作り方

    HPでメール送信した人たちのログファイルを作りたいと思っています。 メール送信ボタンを押した日時と、その人のメールアドレスをログに残したいのですが、「ログファイルをどうやって作るのか」がわかりません; 参考となるHPとかでもかまいませんので、この場合のログファイルの作り方を教えてください。 自宅サーバです。 よろしくお願いします。

  • ログ(メール内容)の保存について

    こんばんは。ログ保存について教えてください。 以前、フリーメールのログが全てサーバー保存されていて、犯罪などに使われた場合、あとから内容を閲覧できると聞いたことがあります。 例えばyahooメッセンジャーをダウンロードして、 「文字チャット」や「ファイル送信」したら、 内容はどこか(yahooサーバー)に保存されているのでしょうか? よろしくお願いします。

  • ログファイルについて

     PCに不具合が出たので、サポートに問い合わせたらログファイルを送ってくれといわれました。  ログファイルは「PCの処理内容や警告などの履歴を記録するもの」程度の認識しかないのですが、どこまで記録されるものなのですか?  調査に必要だし悪用されるわけではないということはわかっているのですが、パソコンの中を見られるようでなんだか気持ち悪くて(^^;)  見る人が見ればネットの履歴やメールの送受信までわかったりするんでしょうか?

  • MS-DOSでのエラーログ保存について

    はじめまして、現在DOSでサーバーのデータバックアップ用のバッチファイルを作成し タスクマネージャーで動かそうとしています。 下記の内容でとりあえずは組んでいるのですが、エラーログを保存する方法を 色々調べましたけど見つかりませんでした。 @echo 開始日付、開始時刻表示 @echo %date% %time% >> d:\BackupLOG\サーバー名Copy.log @echo サーバー名のバックアップを開始 xcopy i:\\サーバー名\*.* f:\\保存先\ /EXCLUDE:D:\BackupBAT\un-mlist.txt /e /h /k /c /y /r >> d:\BackupLOG\サーバー名Copy.log @echo 終了日付、終了時刻表示 @echo %date% %time% >> d:\BackupLOG\サーバー名Copy.log 一応バックアップ自体は問題なく動き、バックアップを取ったファイル名と時間は ログに残す事ができましたがエラーが発生した際に備えてエラーログを別に取りたいと 考えています。 あと、上記の設定ではコピー中のファイル名がDOS画面で表示されなくなって しまいました。 どなたか、ご存知な方がいらっしゃいましたらご助力下さい。 よろしくお願いします。

  • ログファイル

    すみません、ちょっと調べる時間がないのでここで質問させてください。 UNIX上で/tmpの下にログファイルを出力するよう、実行プログラムを作成しました。 が、サーバーの容量の関係で/tmpの下にはログファイルをずっと溜め込む事はできないのです。でもこのログファイルは運用上必要なので、このログファイルを何かよい方法で保存しておくことはできないでしょうか? 質問の意味はわかりますでしょうか? よろしくお願い致します。

  • fw1のログファイルを

    ユニックスなどほとんど触ったこともないのですが、 風邪の先輩がわりにログをテキストファイルとして バックアップをNTサーバーに取った後に、クリアしといてっていうのを、 ファイヤーウオールサーバーのなかのfw1の ログファイル自身をFTPで削除してしまいました。 やってから、中身のクリアなのかなー?とか色々おもいながら・・・・これってまずーですか? フルダンプのDATがあるので、ファイル復旧したほうがいいですか?? すみませんパニ食ってます。ボーナス査定時期なんで 非常に困ってます。教えてください!

  • EACのログファイルについて

    現在、光学ドライブに「Plextor/ Premium2」を、リッピングソフトに「Exact Audio Copy」を使用しております。 ここで、EACのログファイルの内容について、"Ar(accurately ripped)" が"OK"であれば問題ないとは思うのですが、"Ar" の照合チェックができない(照合データがない)上で、取り込みが正常終了した場合、どう解釈すればよいのでしょうか? Premium2のレンズに汚れなく全く正常に生ままのCDソース読み取りとリップに成功したものと信じてよいのでしょうか? 仮にCDに軽微な問題があった場合でもPremium2とEACの補正機能でエラー回避できたものと考えてよろしいのでしょうか? というのも、Premium2をレンズクリーニングし、その前後に同じ音源(Ar照合できない音源)をリップしてみたのですが、ログファイルの内容は両者とも同じ(100%正常終了)だったものの、実際リップしたwavファイルを同じ環境で聞いてみると、クリーニング前に聞き取れた残響音の若干の割れがクリーニング後に消えていたのです。 どなたかPlextorとEACに詳しい方からのアドバイスをお待ちしております。

  • タスクスケジューラのログをテキストファイルとして

    今までWindows2000や2003サーバーで動かしているタスクスケジューラの管理で、SchedLgU.Txtなどを定期的にメールで飛ばして、特定のキーワードで検索して管理していました。 今度2008R2に置き換えるのですが、タスクスケジューラが根本的に変わったようで、ログもテキストではなくイベントビュアの方で見るようになっているのですね。席にいる時はそれでも良いのですが、出張中のことも考えると、今までのようにメールで飛ばせる方が便利です。 そこで質問なのですが、Windows2008R2のタスクスケジューラが吐いているログを、テキストファイルとして取得する方法はないでしょうか?(定期的にメールで飛ばすところは大丈夫です)。 よろしくお願いします。