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