在Ubuntu環境下,Node.js日志存儲策略可從日志生成、輪轉、存儲、分析及安全等方面設計,以下是關鍵方案及工具:
winston
(功能豐富)、pino
(高性能)或bunyan
(結構化JSON日志),支持配置日志級別(開發環境debug
,生產環境error
)和輸出格式(如JSON)。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' })
]
});
/etc/logrotate.d/nodejs
):/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
copytruncate
dateext
}
pm2 install pm2-logrotate
,配置參數如max_size: 100M
、retain: 30
。winston-daily-rotate-file
,直接在代碼中定義輪轉規則(如按天生成日志)。/var/log/nodejs/
目錄,按日期或服務拆分文件,便于管理。chmod 640
),避免敏感信息泄露。forever
監控進程狀態,異常時觸發告警。winston
默認支持異步寫入。debug
日志,僅記錄關鍵錯誤和警告。參考來源: