最近在 Linux 主機中 /var/log
資料夾底下發現有許多的 xxx.log.1
, xxx.log.2
的檔案,好奇去查並記錄下來
這些檔案是 log rotate 產生的檔案,主要功能是做日誌檔案的輪替
logrotate 設定檔
主要設定檔的路徑是在 /etc/logrotate.conf
,會載入 /etc/logrotate.d/
底下的檔案,根據設定檔進行 rotate
執行 logrotate
logrotate 預設會在每日的 crontab 中執行 (/etc/cron.daily/logrotate
),如果想要手動執行 logrotate 的話,可以直接呼叫 logrotate --force
指令,--force
是強制執行 rotate 檔案,可搭配 --debug
一起使用並觀察
logrotate 範例
在 /etc/logrotate.conf
檔案中定義 logrotate 的預設值,範例如下
# 設定頻率對日誌檔做 rotate (hourly, daily, weekly, monthly, yearly) (hourly 需要改變 logrotate 的頻率)
# weekly [weekday] <- default 0 (0 means Sunday, 1 means Monday, ... , 6 means Saturday)
weekly
# 日誌被 rotate 了 4 次後刪除舊日誌
rotate 4
# rotate 舊日誌文件後創建新日誌文件權限
# create [mode(octal)] [owner] [group].
create
# 使用日期當作 rotate 文件的後綴
#dateext
# 對日誌檔進行壓縮,預設使用 gzip 壓縮方式
compress
# 載入其他設定檔進行 rotate
include /etc/logrotate.d
/var/log/wtmp { <= 針對 /var/log/wtmp 檔案的參數設定
missingok <= 如果缺少日誌檔案的話,繼續執行下一個而不噴錯誤訊息,對應的參數(nomissingok)
monthly <= 一個月進行一次 rotate
create 0664 root utmp <= 建立新檔案的權限與群組
rotate 1 <= 保留一個檔案
notifempty <= 如果日誌為空,則不 rotate 日誌
delaycompress <= 延後壓縮直到下一次進行 rotate
}
更多關於 logrotate 的細節設定可看手冊
man logrotate.conf