スマホサイト・アプリをつくろう。スマホサイト・アプリをつくろう。swatchというログ監視ツールがあります。現在、swatchでメールログに特定の文字列の出現を監視することで、キャリアブロックを検知し、その後の処理を行うスクリプトを起動するという用途で使っているのですが、メールサーバーのロギングにdaemontools付属のmultilogを利用している場合は、swatchの使いかたに少し工夫が必要です。swatchの挙動swatchの標準の起動方法では、perlの「File::Tail」を用いて、iノード番号を基にファイルオープンし、最終行に出力される文字列をバックグラウンドで監視し続けます。この時、swatchはiノード番号を追い続けるので、ログローテーションによって監視対象のファイルが入れ替わった事に気付きません。そのため、メールログをsplogerなどで出力しており、logrotateによってローテーションしている場合、logrotate.dに書かれた設定ファイルのローテーションのタイミングでswatchを再起動させる必要があります。新しく生成されたログファイルを開きなおすためです。daemontoolsに付属のmultilogは通常の利用法だとログファイルのサイズによってローテーションを実行させる事が多いと思います。この場合、logrotateの様に予め決められたタイミングでは無いため、swatchを再起動させる事が難しくなります。解決策の例そこで今回はこの問題を手軽に解決するため、「–read-pipe」というswatchのオプションを使います。「–read-pipe」オプションはファイルへの出力では無く、指定したコマンドやスクリプトの実行結果をswatchに渡すためのオプションです。-F」の出力結果を利用すれば、multilogによる不定期なローテーションの後であっても、同一ファイル名の新しいログファイルを監視し続けてくれます。具体的には下記の様に起動してやればOKです。スマホサイト・アプリをつくろう。まめの木|モバイルSEO見積ツール株式会社セルバは携帯サイト作成・制作、メール配信、店舗検索など、携帯サイトの様々なサービスをご提供しています。