Logging
如何每次輪換將許多日誌文件輪換到不同的子目錄中?
我有一個包含許多日誌文件的目錄,我想每天輪換所有這些文件。出於組織目的,我希望能夠將旋轉的日誌移動到按日期命名的不同目錄(或子目錄)中,保留最後一周的日誌。
我可以使用 logrotate 通過就地旋轉文件來實現大部分功能,甚至可以使用該
olddir
指令將它們移動到單個不同的目錄,但我無法找到一個解決方案來為每個旋轉創建單個子目錄。我怎樣才能做到這一點?:Logs to rotate: /var/log/example/* Desired target directories (keeping a week): /var/log/example/20121006/* [ ... ] /var/log/example/20121012/*
postrotate
您應該能夠在指令中呼叫外部腳本:postrotate /path/to/your.sh endscript
並讓該腳本進行移動,例如:
#!/bin/bash newdir=/var/log/example/`date +%Y%m%d` mkdir $newdir mv /var/log/example.1.gz $newdir find /var/log/example -mindepth 1 -maxdepth 1 -mtime +7 \ -type d -print0 | xargs -0 rm -rf
dateext
但是,僅使用該指令可能更容易。這樣,旋轉的文件將附加一個時間戳(儘管沒有移動到不同的目錄)。有關這兩個指令的詳細資訊,請參閱
logrotate(8)
。