在Debian系统上编写一个Node.js应用程序的日志清理脚本,可以通过多种方式实现。下面是一个使用Node.js编写的示例脚本,该脚本会删除指定目录下超过一定天数的日志文件。我们将使用fs
模块来处理文件系统操作,并使用path
模块来处理文件路径。
首先,创建一个新的JavaScript文件,例如 cleanup-logs.js
:
const fs = require('fs');
const path = require('path');
// 配置参数
const logDirectory = '/var/log/myapp'; // 替换为你的日志目录
const daysToKeep = 7; // 保留日志的天数
// 获取当前日期的时间戳
const now = new Date();
const cutoffDate = new Date();
cutoffDate.setDate(now.getDate() - daysToKeep);
// 确保日志目录存在
if (!fs.existsSync(logDirectory)) {
console.error(`日志目录不存在: ${logDirectory}`);
process.exit(1);
}
// 读取日志目录中的所有文件
fs.readdir(logDirectory, (err, files) => {
if (err) {
console.error(`无法读取日志目录: ${logDirectory}`);
process.exit(1);
}
files.forEach(file => {
const filePath = path.join(logDirectory, file);
fs.stat(filePath, (err, stats) => {
if (err) {
console.error(`无法获取文件信息: ${filePath}`);
return;
}
// 检查文件是否是普通文件并且修改时间是否早于截止日期
if (stats.isFile() && stats.mtime < cutoffDate) {
fs.unlink(filePath, err => {
if (err) {
console.error(`无法删除文件: ${filePath}`);
} else {
console.log(`已删除文件: ${filePath}`);
}
});
}
});
});
});
确保你有权限访问和删除日志目录中的文件。你可以使用sudo
来运行脚本:
sudo node cleanup-logs.js
为了定期运行这个脚本,你可以使用cron
作业。编辑当前用户的crontab文件:
crontab -e
添加一行来每天运行脚本,例如每天凌晨2点运行:
0 2 * * * /usr/bin/node /path/to/cleanup-logs.js >> /var/log/cleanup-logs.log 2>&1
保存并退出编辑器。这样,你的脚本就会每天自动运行一次,清理超过指定天数的日志文件。
logDirectory
变量设置为正确的日志目录路径。通过这种方式,你可以自动化地清理Node.js应用程序的日志文件,保持系统的整洁和高效。