温馨提示×

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

小樊
39
2025-12-08 00:03:28
栏目: 编程语言

Ubuntu 环境下利用日志进行 JS 调试的实用流程

一 前端 JS 的日志与浏览器 DevTools

  • 在代码中加入分层日志输出,便于快速定位:
    • 使用 console.log / console.error / console.warn / console.info 输出关键变量、分支走向与错误信息;错误场景建议附带 堆栈与上下文对象
  • 打开 Chrome/Firefox 开发者工具(F12 或 Ctrl+Shift+I),在 Console 面板查看报错与输出;在 Network 面板核对请求状态、响应码与返回数据;必要时在 Sources 面板设置断点、单步执行与观察作用域变量。
  • 若需远程或设备端调试,可使用 Chrome 远程调试:在目标设备上以 –remote-debugging-port=PORT 启动 Chrome,随后在调试端访问 chrome://inspect 发现并调试目标页面或设备。

二 Node.js 后端日志与系统日志联动

  • 使用结构化日志库输出到控制台与文件,便于检索与聚合:
    • 示例(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(‘info message’, { ctx: ‘startup’ });
        • logger.error(‘error occurred’, { err: err.stack });
  • 记录 HTTP 访问与关键业务事件:
    • Express 中使用 morgan 记录请求日志(如 combined 格式),并在业务关键点打点(如数据库调用、外部 API 调用前后),便于还原调用链与耗时。
  • 将应用接入系统日志,统一运维与检索:
    • systemd 管理时,使用 journalctl -u your-service-name -f 实时查看服务日志;如需将日志写入 /var/log/,确保目录与文件权限正确并配置合适的轮转策略(如 logrotate)。
  • 提升日志可观测性:
    • 按环境设置日志级别(开发环境 debug,生产 info/warn);对异常与未捕获事件进行兜底记录(如 process.on(‘unhandledRejection’)process.on(‘uncaughtException’));必要时引入 ELK/Graylog 等集中式日志平台。

三 高效检索与分析日志的命令行技巧

  • 实时跟踪日志文件:tail -f /path/to/app.log
  • 关键字过滤与上下文查看:
    • 过滤错误:grep -n “ERROR” combined.log
    • 查看错误前后各 5 行:grep -n -A5 -B5 “ERROR” combined.log
  • 多关键字组合与统计:
    • 多词匹配:grep -E “timeout|ECONNREFUSED” app.log
    • 统计频次:grep “ERROR” app.log | sort | uniq -c | sort -nr
  • 结构化日志(JSON)字段筛选(需 jq):
    • 提取 level=error 的日志与时间:jq ‘select(.level==“error”) | {ts: .timestamp, msg: .message}’ combined.log
  • 按时间窗口查看(假设日志含 ISO8601 时间):
    • 例如某日的日志:sed -n ‘/2025-12-08T/,/2025-12-08T23:59:59/p’ app.log

四 常见场景与对应做法

  • 前端页面白屏或 JS 报错:打开 DevTools Console 定位语法/运行时错误;在 Network 检查 JS/CSS/接口200/4xx/5xx 状态与响应内容;必要时使用 Sources 断点调试。
  • Node.js 服务异常但进程未退出:用 journalctl -u your-service-name -f 观察服务日志;同时 tail -f error.logcombined.log 查看错误堆栈与业务日志上下文;若涉及 HTTP,复核 morgan 访问日志中的状态码与耗时。
  • 第三方依赖或异步异常频发:在 unhandledRejection/uncaughtException 中记录完整堆栈并上报;为依赖库开启调试输出(如 DEBUG=* 环境变量)以补充内部日志。

0