2009-07-28 4 views
8

私は、短い行を継続的に記録するログファイルを持っています。私はそのファイルに追加された新しい行、つまり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を使用できますが、似たような目的で使用している例はありません。

だから、作業を完了させるにはどうすればよいですか?ありがとう。

+1

なぜテールを使用できないのですか? – Alan

+3

私は、彼がtailファイルのように単に表示するのではなく、ログファイルに追加される行で何らかの処理をしたいと思うし、ログを監視して行を読み込む最良の方法を知りたいと思っています。 – drs9222

答えて

9

FileSystemWatcherを使用して、あなたが懸念しているファイルへの変更を通知することをお勧めします。そこから、私はイベント間のファイルのサイズなどの情報をキャッシュし、完全な行にのみ応答するロジックを追加します。FileStreamクラスのSeek()メソッドを使用して、ファイル内の特定のポイントにジャンプし、そこからのみ。これらの機能があれば、それが必要な場合には、この機能をハンドリングするのは難しいことではありません。

0

Windows用のテールのようなプログラムが必要かどうかは、実際に説明していません。つまり、windows版のtail(cygwinを使用する)が必要な場合、または何らかのログ監視APIを探している場合です。 ..

7

シンプルなソリューションは、http://www.codeproject.com/Articles/7568/Tail-NETの記事で提供されるサンプルコードです。それはあなたのコードにコピー/ペーストする機能の1つです。

+0

ポーリングしている場合、これは最も簡単です。あなたがポーリングしていないならば、FileSystemWatcherは良いでしょう。 –

1

Microsoft(vista/svr08以降)は、ファイルが更新されたとき(たとえば、サービスによって更新されるログファイルなど)、ファイルメタデータを更新しないことに注意することが重要です。ファイルがは、ログファイルを更新しているサービス/プログラムによってを閉じるまで

は例えば、更新日時などのファイルのメタデータは、に更新されません。

したがってFileSystemWatcherは、予想通りにログファイルの更新をキャッチしません。

https://blogs.technet.microsoft.com/asiasupp/2010/12/14/file-date-modified-property-are-not-updating-while-modifying-a-file-without-closing-it/

関連する問題