Ubuntu上Node.js日志分析工具推荐
一 快速选择建议
二 工具清单与适用场景
| 工具 | 类型 | 主要用途 | 关键特点 | 典型场景 |
|---|---|---|---|---|
| Winston | Node.js日志库 | 应用内结构化日志 | 多传输(文件/控制台/HTTP)、多级别、易扩展 | 需要灵活输出与多目标归档 |
| Pino | Node.js日志库 | 高性能结构化日志 | 极快、低开销、JSON输出友好 | 高并发/低延迟服务 |
| Bunyan | Node.js日志库 | 结构化日志 | 简洁API、便于解析与分析 | 需要后续程序化处理 |
| Log4js | Node.js日志库 | 多输出日志 | 配置丰富、多Appender | 迁移自Java/log4j体系 |
| PM2 | 进程管理/日志聚合 | 生产运行与日志流 | 进程守护、日志聚合与轮转、pm2 logs | 多实例Node服务 |
| journalctl | 系统日志 | 查看服务日志 | 与systemd集成、可过滤/实时跟踪 | 排查服务级问题 |
| Logrotate | 日志轮转 | 控制日志体积 | 自动轮转、压缩、删除 | 防止单日志过大 |
| Glogg | 桌面/终端查看器 | 大文件检索 | 快速加载大文件、交互式过滤 | 离线分析GB级日志 |
| ELK Stack | 集中式平台 | 采集/存储/检索/可视化 | 强大搜索与仪表板 | 复杂查询与合规审计 |
| Graylog | 集中式平台 | 日志收集与检索 | 搜索/可视化、易部署 | 团队级集中管理 |
| Grafana Loki | 集中式平台 | 日志聚合与查询 | 与Grafana集成、低成本 | 云原生/微服务 |
| Prometheus + Grafana | 指标监控 | 性能与错误趋势 | 指标采集、可视化仪表板 | 与日志互补的监控 |
| Rsyslog | 系统日志 | 日志转发/处理 | 高性能、多输出/过滤 | 统一系统日志管道 |
三 快速上手示例
使用Winston输出JSON并分文件
npm install winstonconst winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('Server started', { port: 3000 });
logger.error('DB connection failed', { retry: true });
tail -f combined.log | grep error使用PM2聚合与轮转
npm install -g pm2pm2 start app.js --name api && pm2 logs apiecosystem.config.js中配置logrotate实现按日轮转与保留策略。使用Glogg快速检索大文件
sudo apt-get install gloggglogg app.log,在界面中搜索关键字、过滤级别与时间范围。四 组合方案示例
五 实践要点