私は、短い行を継続的に記録するログファイルを持っています。私はそのファイルに追加された新しい行、つまりunixのtailプログラムに反応する(またはポーリングする、または聴く)サービスを開発する必要があります。そのため、私のサービスはファイルを常に最新の状態に保ちます。C#:テールのようなテキストファイルのプログラム
読んだストリームを開いて開いたままにしておくのは良い考えではないと思います。多分私はFileSystemWatcherクラスを使うべきです。
短い話ですが、このファイルに新しい行が追加されるたびにリアルタイムで解析する必要があります。
アイデアのヘルプや表示は本当に感謝しています。
EDIT
私は非常に明確ではありませんしてきたよう。私はプログラムを必要としません、私はプログラムを書いています。ファイルに追加されたすべての改行を読み込む(そして処理する)ために。私が探しているのは、方法論(または、これを実装する方法)で、継続的にtailingのファイルが書き込まれていることを意味します。
私は、このファイルを "リッスン"し、新しい行ごとに操作を行うWindowsサービスを開発する必要があります。だから、
、与えられた瞬間にファイルがある場合:
12.31.07 - jdoe [log on] 347
12.32.08 - ssmith [log on] 479
12.32.08 - mpeterson [log off] 532
12.32.09 - apacino [log on] 123
まさにその瞬間にライン
12.32.11 - pchorr [log on] 127
は私が持っていることをログ記録プログラム(して、ログファイルに追加されていること私のWindowsサービスがライン中毒に反応し、新しいライン(12.32.11 - pchorr [log on] 127
)を傍受して処理する必要があります。等々。
今、私はこれを行う方法がわかりません。ファイルをn秒ごとにポーリングし、最後に読み込んだ行をメモリに格納し、新しく追加された行だけを処理する必要があります。この問題は、それが非常に遅く、毎回非常に大きなファイルを読んでいるということです。
おそらくFileSystemWatcher
を使用できますが、似たような目的で使用している例はありません。
だから、作業を完了させるにはどうすればよいですか?ありがとう。
なぜテールを使用できないのですか? – Alan
私は、彼がtailファイルのように単に表示するのではなく、ログファイルに追加される行で何らかの処理をしたいと思うし、ログを監視して行を読み込む最良の方法を知りたいと思っています。 – drs9222