在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應用程序的日志,確保系統資源的有效利用。