要清理Node.js過期日志,你可以使用一些第三方庫,例如logrotate,或者編寫自定義腳本來實現。下面是兩種方法的詳細說明:
方法一:使用logrotate
對于Debian/Ubuntu系統,可以使用以下命令安裝:
sudo apt-get install logrotate
對于RHEL/CentOS系統,可以使用以下命令安裝:
sudo yum install logrotate
/etc/logrotate.d/nodejs,并添加以下內容:/path/to/your/nodejs/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
}
這里的配置表示每天輪轉日志文件,保留最近7天的日志,壓縮舊日志,如果日志文件丟失則不報錯,如果日志文件為空則不輪轉,創建新的日志文件時設置權限為0640,屬主為root,屬組為adm。
sudo logrotate -f /etc/logrotate.d/nodejs
方法二:編寫自定義腳本
你可以編寫一個簡單的Node.js腳本來清理過期日志。以下是一個示例腳本:
const fs = require('fs');
const path = require('path');
const logsDir = '/path/to/your/nodejs/logs';
const maxDays = 7;
fs.readdir(logsDir, (err, files) => {
if (err) {
console.error('Error reading logs directory:', err);
return;
}
const now = new Date();
files.forEach(file => {
const filePath = path.join(logsDir, file);
fs.stat(filePath, (err, stats) => {
if (err) {
console.error('Error reading log file stats:', err);
return;
}
const ageInDays = Math.floor((now - stats.mtime) / (1000 * 3600 * 24));
if (ageInDays > maxDays) {
fs.unlink(filePath, err => {
if (err) {
console.error('Error deleting log file:', err);
} else {
console.log(`Deleted expired log file: ${filePath}`);
}
});
}
});
});
});
將此腳本保存為clean-old-logs.js,然后在命令行中運行node clean-old-logs.js。你可以將此腳本添加到cron作業中,以便定期清理過期日志。
注意:在運行這些腳本之前,請確保將/path/to/your/nodejs/logs替換為你的實際日志文件路徑。