Ubuntu下Node.js日志存储策略可结合工具、轮转、权限等多方面,以下是关键要点:
-
日志库选择:
- Winston:支持多传输(文件、控制台、HTTP等),可配置日志级别和格式。
- Pino:高性能,适合高并发场景,支持JSON格式。
- Bunyan:结构化JSON日志,便于分析。
- Log4js:支持日志轮换、文件输出等,适合复杂场景。
-
日志轮转与清理:
- 使用 logrotate 工具按天/大小轮换日志,保留最近7-90天日志并压缩旧文件。
- 配置示例:
/var/log/nodejs/*.log { daily rotate 7 compress missingok create 0640 root adm }
。
-
存储路径与权限:
- 日志建议存储在
/var/log/nodejs/
目录,确保属主为 root
,权限为 0640
。
- 避免将日志存储在应用根目录,防止敏感信息泄露。
-
集中式管理(可选):
- 生产环境可使用 ELK Stack(Elasticsearch+Logstash+Kibana)集中存储和分析日志。
- 通过 PM2 管理多进程日志,支持日志聚合和远程存储。
-
安全与性能:
- 过滤敏感信息(如密码、用户数据),使用脱敏工具处理日志。
- 选择高性能日志库(如Pino),避免阻塞主线程。
-
监控与报警:
- 通过 Prometheus+Grafana 监控日志文件大小和数量,异常时触发报警。
参考来源: