tail -f を使用してログ ファイルを監視し、解析して grep を使用してデータを抽出し、そのデータを mysql クエリとして渡そうとしています。tailf によって検出された各新しい行を php スクリプトに渡すことでそれを行うことができますが、その方法がわかりません..または、直接 php で tailf をシミュレートできますが、php でファイルの変更を監視するにはどうすればよいですか? ちょっと待って、サイズを探して、最後の位置を覚えて、それを探して、違いまで読みますよね?誰が何を使うのが良いかについてヒントを与えることができますか? それとももっと簡単ですか?また、名前付きパイプが解決策になる可能性があると聞いたことがありますが、そこからデータを取得する方法がわかりません。ところで、ロガーはnginxです..ありがとう
1431 次
2 に答える
3
シェルでは、次のようなことができます。
tail -f file.log|grep whatever-you-want|while read line; do
echo $line
done
行を必要なものに変更するだけecho $line
です-PHPまたはその行で必要なものを呼び出すことができます。これ$line
は、tail/grepの組み合わせからの行です。
詳細については、これらの SOq をご覧ください。
于 2010-12-01T00:13:29.013 に答える
0
さまざまなアプローチを混在させています。tail -f は、プロセスが常に実行されていることを意味し、ログ ファイルが切り捨てられた (ローテーションされた) 場合は、おそらく行き詰まるでしょう。ログ監視に良いものが必要な場合(Linuxを想定しています)、ファイルの変更を監視し、記憶されている位置を探す必要があります。私見の最善の方法は、既存のソリューションに依存することです。syslog-ng が真っ先に頭に浮かぶようです。ログファイルをプログラムにパイプできます。ただし、syslog 化されていないログには当てはまりません。私はhttp://www.php.net/manual/en/intro.inotify.phpを選びます。これには実行中のプロセスが必要です。最終的な (順序は状況によって異なります) 解決策として、cron で定期的にチェックします。
于 2010-12-01T00:28:18.487 に答える