定期清理Node.js日志是一個很好的實踐,可以幫助你避免磁盤空間不足的問題。以下是一些常見的方法來定期清理Node.js日志:
logrotate 工具logrotate 是一個非常強大的日志管理工具,可以自動輪轉、壓縮和刪除日志文件。
安裝 logrotate:
sudo apt-get install logrotate # 在Debian/Ubuntu上
sudo yum install logrotate # 在CentOS/RHEL上
配置 logrotate:
創建一個新的配置文件 /etc/logrotate.d/nodejs,并添加以下內容:
/path/to/your/nodejs/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
解釋:
daily: 每天輪轉一次日志。missingok: 如果日志文件不存在,不會報錯。rotate 7: 保留7個輪轉的日志文件。compress: 壓縮舊的日志文件。notifempty: 如果日志文件為空,不進行輪轉。create 0640 root adm: 創建新的日志文件,權限為0640,屬主為root,屬組為adm。測試配置:
sudo logrotate -f /etc/logrotate.d/nodejs
pm2 管理Node.js應用如果你使用 pm2 來管理你的Node.js應用,它內置了日志管理功能。
安裝 pm2:
npm install pm2 -g
啟動應用并配置日志管理:
pm2 start app.js --name my-app
pm2 logs my-app --lines 100 # 只顯示最近的100行日志
pm2 logs my-app --clear # 清空日志
配置日志輪轉:
pm2 默認會自動輪轉日志文件,但你可以通過配置文件進一步自定義:
{
"apps": [{
"name": "my-app",
"script": "app.js",
"out_file": "/path/to/your/nodejs/logs/out.log",
"error_file": "/path/to/your/nodejs/logs/err.log",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"max_size": "10M",
"retain": 7
}]
}
解釋:
out_file 和 error_file: 指定日志文件的路徑。log_date_format: 日志日期格式。max_size: 單個日志文件的最大大小。retain: 保留的日志文件數量。如果你需要更復雜的日志管理邏輯,可以編寫自定義腳本來定期清理日志。
創建腳本:
創建一個名為 clean_logs.sh 的腳本:
#!/bin/bash
LOG_DIR="/path/to/your/nodejs/logs"
MAX_LOGS=7
# 獲取日志文件列表并按修改時間排序
LOG_FILES=$(ls -t $LOG_DIR/*.log)
# 如果日志文件數量超過最大值,刪除最早的日志文件
if [ $(echo "$LOG_FILES" | wc -l) -gt $MAX_LOGS ]; then
rm $LOG_FILES:$((MAX_LOGS-1))
fi
設置腳本權限:
chmod +x clean_logs.sh
設置定時任務:
使用 cron 設置定時任務,每天運行一次:
crontab -e
添加以下行:
0 0 * * * /path/to/clean_logs.sh
通過以上方法,你可以有效地定期清理Node.js日志,保持系統的整潔和穩定。