問題タブ [apache-tailer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1182 参照

java - TailerListenerで古いログメッセージを回避する方法

Apache CommonsTailerAPIを使用してログファイルを監視しています。

アプリケーションを再起動するたびに、古いログメッセージも表示されます。代わりに、新しいログメッセージのみが表示されます。

古いログメッセージを取得するこの動作を回避するにはどうすればよいですか?

0 投票する
3 に答える
3227 参照

java - Apache Commons IO Tailer が古いログ メッセージを配信する

私のコードを以下に示します。

ここでは、 [info,error,abc.catch,warning] のような値をgetLogPattern()返します。ArrayListこのコードを実行すると、古いログ メッセージに続いて新しいログ メッセージが表示されます。つまり、出力は次のようになります。

このようなログ ファイルから古いログ メッセージを取得しないようにするにはどうすればよいですか?

0 投票する
1 に答える
302 参照

java - ファイルをテーリングするときのJavaの巨大な仮想メモリ

commons IO の Apache Tailer を使用して、マシン上の多数のログ ファイルに対して "tail -f" のようなプログラムを作成しました。基本的にはスレッドで実行され、ファイルを RandomAccessFile として開き、その長さをチェックし、最後までシークします。収集したすべてのログ行をクライアントに送信します。

それについてのやや不快なことは、Linux では膨大な量の VIRT メモリを表示できることです。現在、16.1g VIRT (!!) と 203m RES と表示されています。

仮想メモリについて少し調べてみたところ、多くの場合「心配する必要はない」ことがわかりました..しかし、それでも 16 GB ですか? それは本当に健康ですか?

pmapでプロセスを見ると、ログファイル名が表示されていないので、メモリマップされていないと思います..そして、pmap出力の「マッピング」列にある「[ anon ]」を読みました(man pmap) 「割り当てられたメモリ」。それはどういう意味ですか?:)

ただし、 pmap -x は次を示します。

..ですから、結局のところ、RAMに常駐していないと思います..しかし、このようなファイルを開くとき、ファイルの最後までシークするときなど、メモリに関してどのように機能しますか?

これらすべての GB の VIRT メモリについて心配する必要がありますか? 現在、84 個の異なるログ ファイルを「監視」しており、ディスク上のこれらの合計サイズは 31414239 バイトです。

編集: 別の、「本番に似ていない」Linuxマシンでテストしたところ、同じ数値が得られませんでした。VIRT は最大で 2.5 GB に達しました。デフォルトの JVM 設定の一部が異なることがわかりました (「java -XX:+PrintFlagsFinal -version」で確認):

..それで、うーん..最大制限が(かなり)高いので、大きなマシンでより多くのヒープを取得すると思いますか?また、これらの値を常に明示的に指定することをお勧めします..

0 投票する
1 に答える
524 参照

java-8 - commons-io Tailer は、JVM 内でファイルが作成されたときに handle() を呼び出していません

Tailer の実装 ( commons-io Tailer ) が動作しています。これが私の Tailer です。

そして私のテスト:

bos の内容が調べられる時点では空ですが、ログ ファイルには次の 2 行が含まれています。

bash スクリプトを使用して作成および書き込みされたファイルにテストを向けると、次のようになります。

その後、完全に機能します。しかし、テスト ランナーでファイルを作成すると、リスナーが Tailer ハンドラーによって呼び出されることはありません。別のスレッドでファイルを作成しようとしたり、テストで作成されていない既存のファイルに書き込もうとしたり、Tailer に渡して監視した後にテストでファイルに書き込もうとしたりしましたが、何も機能しません。テスト ランナーでファイルへの書き込みを試みると、TailerListener が handle() メソッドを起動することはありません。私はEclipse内でJava 8を搭載したWindows 7でこれを実行しています。テストを実行している JVM によって書き込まれたファイルを使用して TailerListener の handle() メソッドを単体テストした経験のある人はいますか?

ありがとう。

0 投票する
1 に答える
909 参照

java - Apache commons IO Tailer の理解

リアルタイムのログ解析には Apache Commons IO Tailer を使用する予定です。遅延パラメーターを 500 ミリ秒に指定し、キーが継続的に非常に高速で生成されている場合、Tailer が内部でどのように機能するかを理解したいと思います。その後、目的を解決できるでしょうか。

例:

Tailer は x 行まで処理し、500 ミリ秒待ってから再び来ます。

質問:

  1. 以前の行から開始するか、毎回最初の行から開始しますか。
  2. また、データがリアルタイムで生成されているファイルで Tailer はどのように動作しますか? ファイルを追跡し続け、追跡を停止することはありません (この状況では、遅延は決して明らかになりません)。