新着記事

2006年01月03日

ログファイルを監視して、特定のキーワードが見つかったら、何らかのコマンドを実行する。

ある商用アプリケーションのログファイルの監視をしてた時に、
さっくり作ってみた。
「ログファイルにあるキーワードが入ってきたら、ダイアログを表示して通知する。」

って、expectコマンドを使っただけなんですけど。

(これ使わなくても、swatchっていう、それようなコマンドもある。)

watch_log_file_now_watching.jpg
ログファイルの監視面倒くさい (´ヘ`;) 




できあがったのはこれ。
ダウンロード

今の実装はキーワードを見つけた時に、
Applescriptでダイアログを出すようにしているので、Mac OSX環境用です。

watch_log_file.shの35行目の、systemから始まる行を変更すれば、
他の環境でも実行できるし、他の処理でも実行できると思う。

watch_log_file_dialog.jpg
キーワードを発見時に表示するダイアログ。Mac OSX 依存。




使い方は
./watch_log_file.sh 監視ファイル 監視キーワード

実行例は
./watch_log_file.sh /var/log/system.log ERRORCODE:128

です。

で、監視しているログファイルに、
指定した「キーワード」が新しく入ってきたら、
上の画像にあるダイアログが表示される仕組みになっています。



本日は以上です。
ではー。




以下はスクリプトの中身 (記事用に、実際のファイルとは少し変えてある)。

・watch_log_file.shというログファイル監視スクリプトと、
・display_dialog.shというダイアログを表示する環境依存なスクリプト
の2つのファイルからできています。

監視しているログファイルの最後の行に、
監視対象のキーワードが入っていたら、しょっぱなからダイアログが出ちゃうけど、
それは仕様です(←えー)。

# watch_log_file.sh
 1 #!/bin/sh
2
3 # change current directory
4 cd $(dirname $0)
5
6 # argument count check
7 if [ $# -lt 2 ]; then
8 cat << EOF
9 argument error.
10 usage:
11 watch_log_file.sh target_file search_keyword
12 EOF
13 exit 1
14 fi
15
16 TARGET_FILE=$1
17 shift
18 KEYWORD="$*"
19
20 # file check
21 if [ ! -f ${TARGET_FILE} ]; then
22 cat << EOF
23 target file is not found.
24 usage:
25 watch_log_file.sh target_file search_keyword
26 EOF
27 exit 1
28 fi
29
30 # run expect command
31 expect -- << EOF
32 set timeout -1
33 spawn tail -1 -f ${TARGET_FILE}
34 expect "${KEYWORD}"
35 system ./display_dialog.sh find keyword: ${KEYWORD} in ${TARGET_FILE}
36 EOF



# display_dialog.sh
 1  #!/bin/sh
2
3 # function for display dialog
4 osa_display_dialog() {
5 if [ $# -lt 1 ]; then
6 cat << EOF
7 argument error.
8 usage:
9 osa_display_dialog display_message
10 EOF
11 exit 1
12 fi
13
14 osascript << EOF > /dev/null
15 tell application "Finder"
16 activate
17 display dialog "$*" as text
18 end tell
19 EOF
20 }
21
22 # argument count check
23 if [ $# -lt 1 ]; then
24 cat << EOF
25 argument error.
26 usage:
27 display_dialog.sh display_message
28 EOF
29 exit 1
30 fi
31
32 # run function osa_display_dialog
33 osa_display_dialog "$*"

posted by 小見 拓 at 03:20| Comment(0) | TrackBack(1) | コマンドライン | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/11279862
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック


Excerpt: AppleScriptAppleScript(アップルスクリプト)は、アップル・コンピュータが開発したMac OS用のオブジェクト指向のスクリプト言語。System 7(Mac OS 7にあたる)から..
Weblog: Apple Fan
Tracked: 2007-10-16 18:57
記事検索
 
カテゴリ
最近のコメント
QKCのインストール [3-4/18]
 ⇒ kova (05/23)
calendar.vimには日記をつける機能があったらしい。
 ⇒ とまと (03/07)
最近よく見るようになったvimスクリプトのコメントの書き方
 ⇒ 小見 拓 (02/13)
 ⇒ kana (02/11)
vimエディタ ヘルプのgrep
 ⇒ みかん (07/15)
指定したカラム位置にテキストを流し込む (vimエディタ)
 ⇒ こみ (03/20)
 ⇒ とおりすがり (03/19)
 ⇒ こみ (03/18)
 ⇒ takayama (03/18)
tempfile -- Generate temporary files (Mac OSX)
 ⇒ take3 (01/20)
 ⇒ こみ (01/19)
 ⇒ take3 (01/18)
 ⇒ こみ (01/17)
 ⇒ take3 (01/14)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#2
 ⇒ (06/30)
 ⇒ Tetsuya Kuramochi (06/29)
 ⇒ Tetsuya Kuramochi (06/29)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#1
 ⇒ (06/03)
 ⇒ Tetsuya Kuramochi (06/02)
最近のトラックバック
vimエディタで「文字コード、改行コードを変更して保存する。」
 ⇒ window.closed (04/25)
 ⇒ himesuke’s STEP-log (03/18)
 ⇒ PukiWiki/TrackBack 0.2 (05/07)
vimエディタの折りたたみ機能の話。その2 (foldmethod=syntax)
 ⇒ 俺の基地 (PukiWiki/TrackBack 0.3) (04/20)
ログファイルを監視して、特定のキーワードが見つかったら、何らかのコマンドを実行する。
 ⇒ Apple Fan (10/16)
ファイル保存ダイアログの初期ディレクトリについての話 (vimエディタ話)
 ⇒ ナレッジエース (07/23)
:e <C-x> (編集中のファイルと同じディレクトリにあるファイルを開く。)
 ⇒ ボクノス (02/07)
Opening many files using wildcards.
 ⇒ PukiWiki Plus! (PukiWiki/TrackBack 0.4) (10/28)
 ⇒ 川o・-・)<2nd life (07/18)
vimエディタで印刷自由自在 その8 -エディタからの直接の印刷の代わりに、2html.vimスクリプトを使用する-
 ⇒ Knoppix Temporary Directory (PukiWiki/TrackBack 0.3) (02/19)
検索でマッチした対象に対して、置換を行う。(vimエディタ話)
 ⇒ 123net :: 開発日記 (12/31)
ごみ箱にファイルを叩き込むスクリプト。(vimエディタ)
 ⇒ "OSX" .app's :Macのアプリを便利、感動、面白をベースにほぼ日刊で紹介。 (11/26)
パーセント、%、percent でのカーソル移動 (vimエディタ話)
 ⇒ プログラミング言語 (10/11)
過去ログ
Profile
小見 拓
mail@nanasi.jp
小見と申します。
神奈川でデベロッパーやってます。
名無しのVIM使い

RSS 1.0


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。