在 Linux 系統(tǒng)中,日志輪轉(zhuǎn)通常由 logrotate
工具管理
/etc/logrotate.d/myapp
。使用文本編輯器(如 vim、nano 等)打開該文件:sudo nano /etc/logrotate.d/myapp
/path/to/your/log/files/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
/bin/systemctl reload myapp.service > /dev/null 2>&1 || true
endscript
}
這個(gè)配置的解釋如下:
/path/to/your/log/files/*.log
:指定要輪轉(zhuǎn)的日志文件路徑。將其替換為你的應(yīng)用程序日志文件所在的目錄。daily
:每天進(jìn)行一次日志輪轉(zhuǎn)。missingok
:如果日志文件不存在,不會(huì)產(chǎn)生錯(cuò)誤。rotate 7
:保留最近 7 個(gè)日志文件。compress
:壓縮舊的日志文件。delaycompress
:延遲壓縮,直到下一次輪轉(zhuǎn)。notifempty
:如果日志文件為空,則不進(jìn)行輪轉(zhuǎn)。create 0640 root adm
:創(chuàng)建新的日志文件,設(shè)置權(quán)限為 0640,屬主為 root,屬組為 adm。sharedscripts
:如果有多個(gè)日志文件,只執(zhí)行一次 postrotate
腳本。postrotate
和 endscript
之間的部分:在輪轉(zhuǎn)后執(zhí)行的腳本。在這個(gè)例子中,我們重新加載名為 myapp.service
的 systemd 服務(wù)。將其替換為你的應(yīng)用程序服務(wù)名稱。sudo logrotate --debug /etc/logrotate.d/myapp
如果沒有錯(cuò)誤或警告,那么你的配置應(yīng)該是正確的。
logrotate
通常由 cron 任務(wù)自動(dòng)執(zhí)行。確保你的系統(tǒng)已經(jīng)安裝了 cron
,并且 /etc/cron.daily/logrotate
文件存在。這將確保每天自動(dòng)執(zhí)行日志輪轉(zhuǎn)。現(xiàn)在,你已經(jīng)成功配置了 Linux 日志輪轉(zhuǎn)。根據(jù)你的配置,日志文件將按照指定的規(guī)則進(jìn)行輪轉(zhuǎn)。