定期清理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日志,保持系统的整洁和稳定。