0

ログファイルのデータを頻繁に分析し、それに応じて処理しています。入力であるログ ファイルは、無限に大きくなるファイルです。長時間実行されるプロセスが書き込みを行い、root ユーザーに属します。

ログ ファイルに対するすべてのファイル アクセス許可があります。私がやりたいことは、別のプロセスを邪魔することなく、その時点までファイルの内容のみを移動することです(ファイルの内容を取得してファイルをクリアします)。できれば、python スクリプトを使用します。

[編集] (つまり)、ログ ファイル (プライマリ) からその時点までのすべての内容をカット アンド ペーストし、それらを別の (セカンダリ) ログ ファイルに入れる必要があります。このセカンダリ ログ ファイルをデータ分析に使用します。それまでの間、長時間実行されているプロセスがプライマリ ログ ファイルに何かを書き込んでも、それが失われることはありません。新しいデータを他の内容と一緒にセカンダリ ログ ファイルに移動しても問題ありません。

[編集 2] 私が直面している主な問題は、プライマリ ログ ファイルから取得したファイルの内容をクリアすることです。プライマリ ログから読み取り、セカンダリ ログに書き込み、それらの内容をファイルから削除するときに、ファイルに書き込まれたログが失われないようにする必要があります。

TimedRotatingFileHandler を調べましたが、この点では役に立ちません。他の提案はありますか?

ありがとう

4

1 に答える 1

0

ファイルを末尾にする Linux の方法は簡単です。ロギング プロセスが開始されたらすぐに、ログ ファイルに対して次のコマンドを使用します。

  tail -f log_file_name.log >> /tmp/new_file_name.log &


[EDIT] tail -f log_file_name.log >> /tmp/new_file_name.log | tail -f /tmp/new_file_name.log | xargs -I TailOutput echo sed -i '/TailOutput/d' log_file_name.log

次に、この new_file_name.log を使用して、この新しいファイルでやりたいことを何でも行うことができます。また、元のログ ファイルはそのままです。これが少し歪んでいることは理解していますが、それが今私が考えることができる方法です!!!

于 2013-09-13T09:15:07.697 に答える