首页主机资讯如何使用Ubuntu JS日志进行调试

如何使用Ubuntu JS日志进行调试

时间2025-11-28 10:23:04发布访客分类主机资讯浏览1475
导读: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.logcombined.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 } );
  • 观察与过滤:
    • 实时查看: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
Ubuntu JS日志中如何优化数据库查询 Ubuntu JS日志中如何监控API调用

游客 回复需填写必要信息