如何使用Ubuntu JS日志进行调试
导读:Ubuntu 环境下使用 JS 日志进行调试的实用流程 一 定位日志来源与输出方式 区分场景:前端 JS 主要看浏览器开发者工具 Console;Node.js 后端看应用日志文件、systemd 日志(journalctl)或进程管理日...
Ubuntu 环境下使用 JS 日志进行调试的实用流程
一 定位日志来源与输出方式
- 区分场景:前端 JS 主要看浏览器开发者工具 Console;Node.js 后端看应用日志文件、systemd 日志(journalctl)或进程管理日志(PM2)。
- 常见日志位置与工具:
- 应用自定义日志:项目目录的 logs/ 或你配置的日志路径(如 /var/log/yourapp.log)。
- 系统日志:/var/log/syslog、/var/log/messages。
- systemd 服务日志:journalctl -u your-service。
- PM2 托管应用:pm2 logs your-app。
- 建议做法:在 Node.js 中使用结构化日志库(如 winston)输出到文件与控制台,便于检索与归档。
二 快速查看与检索日志
- 实时查看:
- 文件日志:tail -f logs/app.log
- systemd 服务:journalctl -u your-node-service -f
- PM2 应用:pm2 logs your-app -f
- 关键词过滤与高亮:
- 过滤错误:tail -f logs/app.log | grep -i “error”
- 精准匹配(正则):grep -E ‘^[[0-9]{ 4} -[0-9]{ 2} -[0-9]{ 2} ’ app.log
- 时间范围检索(systemd):journalctl -u your-service --since “10 minutes ago”
- 组合工具:grep + awk/sed 做字段抽取与统计,便于定位高频错误与异常模式。
三 常见错误模式与处理
- EADDRINUSE(端口被占用):
- 查占用:sudo lsof -i :3000
- 释放:sudo kill -9
- Module not found(依赖缺失):npm install < 模块名>
- SyntaxError(语法错误):检查对应文件与行号,修正语法后重启
- Node.js 运行时警告:
- DeprecationWarning:升级 Node.js 与依赖,替换废弃 API(如用 Buffer.alloc 替代 new Buffer)
- UnhandledPromiseRejectionWarning:为所有 Promise 加 .catch() 或 try/catch,并监听 process.on(‘unhandledRejection’)
- MaxListenersExceededWarning:检查事件监听泄漏,必要时使用 emitter.setMaxListeners() 合理调大阈值
四 提升日志可读性与可观测性
- 结构化日志:使用 winston 输出 JSON,按 level(error/warn/info/debug) 分流到不同文件(如 error.log、combined.log),便于检索与聚合。
- 进程管理:用 PM2 统一托管与日志轮转(如 pm2 start app.js --name api & & pm2 logs api)。
- 集中化与监控:搭建 ELK(Elasticsearch/Logstash/Kibana) 或接入 Sentry/Bugsnag 做错误追踪;结合 Prometheus + Grafana 监控关键指标与告警。
五 最小化调试示例
- 使用 winston 记录到文件与应用内关键路径:
- 安装:npm install winston
- 配置与输出:
- 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’ } )
]
} );
logger.info(‘服务启动’, { port: 3000 } );
logger.error(‘数据库连接失败’, { err: err.message } );
- const winston = require(‘winston’);
- 观察与过滤:
- 实时查看:tail -f combined.log | grep -i “error”
- 若以 systemd 运行:journalctl -u yourapp -f
- 若以 PM2 运行:pm2 logs yourapp -f
- 前端 JS 问题:打开浏览器 开发者工具 → Console/Network,查看报错与响应状态,配合 source map 定位源码。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何使用Ubuntu JS日志进行调试
本文地址: https://pptw.com/jishu/758788.html
