在Ubuntu系统中监控JavaScript(Node.js)应用程序的日志,可以采用多种方法和工具。以下是一些推荐的解决方案:
使用Node.js日志库
- Winston:一个流行的Node.js日志库,提供多个日志级别、传输(日志目的地)和结构化日志记录。可以通过npm安装:
npm install winston
。使用示例:
const 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 on port 3000'); logger.error('Database connection failed');
使用系统日志工具
- journalctl:作为systemd的日志管理工具,可以查看、过滤和搜索系统日志。例如,实时查看所有日志:
journalctl
;实时查看特定服务的日志:journalctl -u nginx.service
。
使用第三方日志管理工具
- ELK Stack(Elasticsearch, Logstash, Kibana):提供强大的日志集中管理和搜索功能,适合复杂查询场景。需要安装和配置Elasticsearch和Logstash,并配置Winston发送日志到Elasticsearch。
- PM2:一个常用于生产环境中的Node.js进程管理工具,提供进程守护、负载均衡以及内置的日志管理功能。使用
pm2 logs
命令查看应用程序的日志。
实时查看日志
- 使用
tail -f
命令实时查看日志文件的新增内容。例如,实时查看名为logfile.log
的日志文件:tail -f logfile.log
。
日志监控的最佳实践
- 选择适当的日志级别,如info、warn、error等。
- 使用结构化日志记录,便于过滤和分析。
- 与监控系统(如Prometheus和Grafana)集成,实现应用程序性能指标的监控。
通过上述方法,可以有效地监控Ubuntu上的Node.js应用程序日志,确保应用程序的稳定运行和问题的快速排查。