在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日志,仅记录关键错误和警告。参考来源: