質問がありますが、stackoverflow や Web のどこにもヘルプが見つかりませんでした。
プログラム (セロリ分散タスク キュー) があり、それぞれがログファイル (celery_worker1.log、celery_worker2.log) を持つ複数のインスタンス (ワーカー) があります。
重要なエラーはデータベースに保存されますが、新しい操作を実行するときにこれらのログを時々追跡して、すべてが正常であることを確認するのが好きです (ログレベルは低くなります)。
私の問題: これらのログは多くのディスク容量を使用しています。私がしたいこと: 必要なときにだけログ (tail -f) を「監視」できるようにします。
今までの私の考え:
- ログをファイルではなく stdout に出力する: さまざまなファイルに出力する多くのワーカーがあるため、ここでは不可能ですが、それらをすべて一度に追跡したい (tail -f celery_worker*.log)
- logrotate の使用: それは私にとって「OK」な解決策です。私はこれを毎日のタスクにしたくありませんが、これのために crontab を 1 分も置きたくありません。さらに、サーバーは私のものではないため、admin-sys 側で何らかの作業が行われることを意味します。
- 名前付きパイプの使用: 一見良さそうに見えましたが、名前付きパイプ (Linux FIFO) がどこでブロックされているかわかりませんでした。したがって、すべてのパイプを同時に tail -f しない場合、またはテールを終了した場合、ロガーからの書き込み操作がブロックされます。
末尾のときに標準出力にスローし、そうでないときに /dev/null にスローするノンブロッキングの名前付きパイプを持つ方法はありますか?
それとも、そのようなタイプのパイプには技術的な問題がありますか? ある場合、それらは何ですか?
回答ありがとうございます。