在Ubuntu中管理Node.js应用程序的日志存储空间,可以采用以下几种方法:
PM2是一个流行的Node.js进程管理器,它提供了强大的日志管理功能。通过PM2启动应用程序时,可以轻松管理日志文件。
pm2 logs
命令查看应用程序的实时日志。ecosystem.config.js
中设置日志轮转,例如每天轮转一次,保留最近7天的日志文件,并压缩旧日志文件。logrotate是Ubuntu系统自带的日志管理工具,可以自动轮换、压缩、删除和邮件通知日志文件。
配置logrotate:创建一个logrotate配置文件,例如 /etc/logrotate.d/nodejs
,并添加以下内容:
/var/log/nodejs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
这个配置表示每天轮换日志文件,保留最近7天的日志文件,压缩旧日志文件。
使用专门的日志库(如Winston、Bunyan或Morgan)可以帮助你更好地管理日志。
Winston示例:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
这些库提供了丰富的日志管理功能,包括日志级别、日志格式化和日志轮转。
对于需要集中管理和分析日志的应用,可以考虑使用ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog等工具。
ELK Stack示例:
在启动Node.js应用时,可以通过代码指定日志文件的存储路径。
示例:
node app.js logs/app.log 2>&1 &
这样,应用程序的输出就会被重定向到指定的日志文件中。
定期清理过期的日志文件可以释放磁盘空间。
使用find命令清理日志:
sudo find /path/to/your/nodejs/app/logs/ -type f -name "*.log" -mtime +7 -exec rm {} \;
这个命令会删除7天前的日志文件。
使用journalctl清理系统日志:
sudo journalctl --vacuum-time 3d
这个命令会删除3天前的日志。
通过上述方法,你可以在Ubuntu上有效地存储和管理Node.js应用程序的日志,确保系统资源的有效利用。