在Ubuntu系統中,日志輪轉通常是通過logrotate
工具來實現的。對于Node.js應用程序的日志輪轉,你可以按照以下步驟進行配置:
安裝logrotate(如果尚未安裝):
sudo apt-get update
sudo apt-get install logrotate
創建或編輯Node.js應用的日志輪轉配置文件:
你可以在/etc/logrotate.d/
目錄下創建一個新的配置文件,例如為你的Node.js應用創建一個名為myapp
的文件:
sudo nano /etc/logrotate.d/myapp
配置logrotate: 在打開的文件中,添加以下內容并根據你的需求進行調整:
/path/to/your/nodejs/app/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
sharedscripts
postrotate
# 如果你的Node.js應用有重啟邏輯,可以在這里調用
# 例如:systemctl restart myapp
# 或者使用kill命令發送HUP信號給Node.js進程
# kill -HUP `cat /path/to/your/nodejs/app/pidfile`
endscript
}
這里的配置項解釋如下:
daily
: 每天輪轉日志。missingok
: 如果日志文件不存在,不會產生錯誤。rotate 7
: 保留7個輪轉后的日志文件。compress
: 輪轉后的日志文件進行壓縮。notifempty
: 如果日志文件為空,則不進行輪轉。create 0640 root adm
: 創建新的日志文件,權限設置為0640,屬主為root,屬組為adm。sharedscripts
: 如果有多個日志文件匹配,只執行一次postrotate腳本。postrotate
: 輪轉日志后執行的腳本,可以用來重啟Node.js應用以打開新的日志文件。測試logrotate配置: 你可以手動測試logrotate配置是否正確:
sudo logrotate -f /etc/logrotate.d/myapp
這個命令會強制執行一次日志輪轉,-f
參數表示強制輪轉。
確保logrotate定時任務運行:
logrotate
通常每天運行一次,檢查是否有需要輪轉的日志文件。你可以通過查看/var/lib/logrotate/status
文件來確認logrotate
的狀態。
請注意,上面的配置假設你的Node.js應用的日志文件位于/path/to/your/nodejs/app/logs/
目錄下,并且日志文件的命名模式為*.log
。你需要根據實際情況調整路徑和文件名模式。此外,如果你的Node.js應用是通過systemd管理的,你可能需要使用systemctl
命令來重啟服務,而不是在postrotate
腳本中使用kill
命令。