在Debian系统上处理Node.js日志时,磁盘空间不足是许多开发者常遇到的难题。实际上,借助Node.js内置的zlib模块,即可高效完成日志压缩,无需额外安装任何第三方工具。接下来,我们将直接介绍一个简洁实用的压缩方案。

在开始之前,请确保你的Debian系统已安装Node.js。如果尚未安装,可前往Node.js官方网站下载安装包,或使用系统包管理器(如apt)快速安装——这是基础前提,相信大家都能轻松完成。
然后,在项目根目录下创建一个名为 compressLogs.js 的文件,并将以下代码复制进去:
const fs = require('fs');
const zlib = require('zlib');
// 读取日志文件
fs.readFile('app.log', (err, data) => {
if (err) {
console.error('Error reading log file:', err);
return;
}
// 压缩日志文件
zlib.gzip(data, (err, compressedData) => {
if (err) {
console.error('Error compressing log file:', err);
return;
}
// 将压缩后的日志文件写入磁盘
fs.writeFile('app.log.gz', compressedData, (err) => {
if (err) {
console.error('Error writing compressed log file:', err);
} else {
console.log('Log file compressed successfully!');
}
});
});
});
代码逻辑十分清晰:首先读取 app.log 文件,然后调用 zlib.gzip 方法进行压缩,最后将压缩后的数据写入 app.log.gz。整个流程采用异步处理方式,不会阻塞主线程。
保存文件后,在终端中切换到项目目录,运行以下命令:
node compressLogs.js
几秒钟后,你将在同一目录下看到新生成的 app.log.gz 文件,原始日志已成功压缩为gzip格式。检查文件大小,压缩比通常相当可观,尤其对于文本类日志文件效果显著。
当然,每次手动运行脚本并不高效。更合理的做法是配置一个定时任务,例如利用Linux自带的 cron 服务定期执行该脚本。设定每天凌晨自动运行一次,日志文件将始终保持清爽。关于cron的具体配置方法,网上有大量教程可供参考,此处不再赘述——核心思路是将脚本路径添加到crontab中,让系统按计划自动执行。
