GNU/Linux >> Linux の 問題 >  >> Linux

標準出力のローテーションをログに記録しますか?

別の方法として、次のような、サイズが制限され、自動的にローテーションされるログ ファイル セットを維持することを主な目的として設計されたツールを介して、出力をパイプ処理することもできます。

  • ダン・バーンスタインの multilog デーモンツールから
  • ブルース・ガンターの multilog daemontools-encore から
  • ローラン・ベルコの s6-log S6から
  • Gerrit Pape の svlogd runit から
  • ウェイン・マーシャルの tinylog から
  • 私のcyclog から

multilog を処理するためのツール -format ログ ファイル セットには、以下が含まれます:

  • ラス・オールベリーの multilog-watch
  • logrange
  • ポール・クレマーの multilog-stamptail
  • 私のfollow-log-directories から
  • 私のexport-to-rsyslog から

さらに読む

  • ジョナサン・デ・ボイン・ポラード (2015)。 「ロギング」。 daemontools ファミリー .よくある回答
  • ジョナサン・デ・ボイン・ポラード (2016)。 logrotate は使用しないでください または newsyslog .よくある回答
  • https://unix.stackexchange.com/a/326166/5132

rotatelogs Apache に同梱されているツール (bin dir) (ドキュメントを参照) stdin から入力を取得し、一定時間後にログをローテーションします


私は同様の問題を抱えていて、最初はlogrotateを破棄していましたが、logrotateは実際にこれをうまく実行できることがわかりました。キーディレクティブは「copytruncate」です "。何らかの理由で、その用語は私が行ったグーグルのどれにも出てこなかったので、この場合の正確な使用方法を明確にするためにこの回答を追加しています.

秘訣は、これがのみ機能することです リダイレクトが「>>」で行われた場合 "> の代わりに " (追加) " (作成).

構成ファイル (truncate.cfg):

/tmp/temp.log {
    size 10M
    copytruncate
    rotate 4
    maxage 100
}

プログラムをテストします (決してファイルを放棄しません)。ディスクがいっぱいになるのを見ることができます。ログファイルの削除は機能しているように見えますが、実際にはディスク上のスペースは解放されません:

cat /dev/urandom >> /tmp/temp.log

実行中のログ ローテーション:

logrotate truncate.cfg

Linux
  1. Linuxで出力をファイルとStdoutにリダイレクトする方法

  2. ファイルの内容をStdoutに出力するコマンド?

  3. Linuxでログファイルを空にする方法

  1. Logrotateを使用してログファイルを管理する方法

  2. Linux で logrotate を使用してカスタム ログ ファイル ローテーションを作成する方法

  3. 出力をファイルと標準出力にリダイレクトする方法

  1. nethogs の出力をログ ファイルにキャプチャする

  2. Linuxコマンド出力をファイルに出力するには?

  3. ログファイルを作る