插件窝 干货文章 Linux系统JS日志记录哪些重要信息

Linux系统JS日志记录哪些重要信息

日志 示例 Node ERROR 420    来源:    2025-05-06

在 Linux 系统中,JavaScript(前端或 Node.js)的日志记录需要根据应用场景(浏览器端、服务端或混合应用)关注不同维度的信息。以下是关键分类和具体内容:


一、基础必备信息

  1. 时间戳

    • 精确到毫秒(YYYY-MM-DD HH:mm:ss.SSS),带时区(如 UTC+8)。
    • 示例2023-10-05 14:30:45.123 UTC+8
  2. 日志级别

    • 标准化分级:DEBUGINFOWARNERRORFATAL
    • Node.js 示例
      javascript console.log('[INFO] User login succeeded');
  3. 请求上下文

    • 前端:用户 ID、Session ID、设备信息(UA)、页面 URL。
    • Node.js:请求 ID、HTTP 方法、API 路径、客户端 IP。
    • 示例
      [REQUEST_ID:abc123] GET /api/users | IP:192.168.1.1

二、错误日志深度信息

  1. 错误堆栈

    • 完整的 Error.stack(包括异步调用链)。
    • Node.js 示例
      javascript try { riskyOperation(); } catch (err) { console.error('[ERROR]', err.stack); }
  2. 关键变量快照

    • 捕获错误发生时的局部变量、请求参数、环境变量(过滤敏感信息)。
    • 示例
      PARAMS: {userId: 42, action: "delete"}
  3. 依赖服务状态

    • 数据库/API 调用失败时的响应码、耗时、错误消息。
      DB_QUERY_FAILED: code=ETIMEDOUT, query="SELECT * FROM users"

三、性能与审计日志

  1. 耗时监控

    • 记录关键操作的执行时间(如 API 响应、SQL 查询)。
      [PERF] /api/orders - 耗时 248ms
  2. 安全审计

    • 敏感操作(登录、权限变更)的详细轨迹。
      [AUDIT] user=admin action=delete_file path=/confidential.txt
  3. 资源阈值告警

    • 内存使用率、CPU 负载、Event Loop 延迟(Node.js)。
      [WARN] 内存使用: 92% | HeapUsed: 1.4GB

四、结构化日志最佳实践

  1. JSON 格式

    • 便于 ELK/Grafana 等工具分析。
    {
     "timestamp": "2023-10-05T14:30:45.123Z",
     "level": "ERROR",
     "message": "DB connection failed",
     "context": {
       "requestId": "abc123",
       "dbHost": "mysql-primary"
     }
    }
    
  2. 日志切割与归档

    • 使用 logrotatepm2-logrotate(Node.js)按天/大小分割日志。
  3. 敏感信息过滤

    • 自动脱敏密码、Token、信用卡号(正则匹配替换)。

五、工具推荐

  • 前端:Sentry、Breadcrumbs 日志。
  • Node.js
    • 日志库:Winston、Pino、Bunyan。
    • 进程管理:PM2(内置日志聚合)。
  • Linux 日志聚合
    bash # 实时追踪 Node.js 日志 tail -f /var/log/node-app.log | grep -E 'ERROR|WARN'

六、避坑指南

  • 避免
    • 打印完整请求体(可能含敏感数据)。
    • 过度日志导致磁盘爆炸(设阈值告警)。
  • 必须
    • 区分环境(开发环境可 DEBUG,生产环境限 ERROR 以上)。
    • 日志权限设为 640,防止泄露。

通过以上结构化日志策略,可快速定位问题,同时满足运维监控与安全合规需求。