別の方法として、次のような、サイズが制限され、自動的にローテーションされるログ ファイル セットを維持することを主な目的として設計されたツールを介して、出力をパイプ処理することもできます。
- ダン・バーンスタインの
multilogデーモンツールから - ブルース・ガンターの
multilogdaemontools-encore から - ローラン・ベルコの
s6-logS6から - Gerrit Pape の
svlogdrunit から - ウェイン・マーシャルの
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