温馨提示×

linux nodejs日志怎么解析

小樊
35
2026-09-14 17:00:37
栏目: 编程语言

在 Linux 下解析 Node.js 日志,通常分为日志格式理解 → 收集方式 → 解析工具/方法 → 实战示例几个层面。下面按常见场景给你一个系统性的说明。


一、Node.js 常见日志形式

1. 控制台输出(最常见)

node app.js > app.log 2>&1

日志内容通常是:

info: server started on port 3000
error: DB connection failed

或 JSON 格式(推荐):

{"level":"error","time":"2024-01-01T10:00:00Z","msg":"db error","stack":"..."}

2. 使用日志库

常见库:

  • winston
  • pino(性能最好,JSON 日志)
  • bunyan

示例(pino):

{"level":50,"time":1700000000000,"msg":"Unhandled error","pid":1234}

二、Linux 下查看和初步解析

1. 实时查看

tail -f app.log

2. 过滤错误日志

grep "error" app.log

3. 按时间范围

awk '$1 >= "2024-01-01" && $1 <= "2024-01-02"' app.log

三、结构化日志解析(推荐方式)

✅ 如果是 JSON 日志(最佳实践)

使用 jq

cat app.log | jq 'select(.level=="error")'

提取字段:

jq '.time, .msg' app.log

统计错误数量:

jq 'select(.level=="error")' app.log | wc -l

四、Node.js 日志集中解析方案

1. 日志采集架构

Node.js
  ↓
文件 / stdout
  ↓
Filebeat / Fluent Bit
  ↓
Elasticsearch / Loki
  ↓
Kibana / Grafana

2. 使用 journald(systemd)

如果你用 systemd 启动 Node.js:

journalctl -u node-app.service -f

导出为 JSON:

journalctl -u node-app.service -o json

五、自己写脚本解析(Node / Python)

Node.js 解析 JSON 日志

const fs = require('fs');
const lines = fs.readFileSync('app.log', 'utf8').split('\n');

for (const line of lines) {
  try {
    const log = JSON.parse(line);
    if (log.level === 'error') {
      console.log(log.time, log.msg);
    }
  } catch {}
}

Python 解析

import json

with open('app.log') as f:
    for line in f:
        try:
            log = json.loads(line)
            if log['level'] == 'error':
                print(log)
        except:
            pass

六、日志规范建议(很重要)

✅ 使用 JSON 日志
✅ 包含字段:

  • level
  • time
  • msg
  • pid
  • traceId(分布式追踪)

❌ 不要只打纯文本日志(难解析)


七、总结一句话

Linux 下解析 Node.js 日志,最好用 JSON + jq / ELK / Loki,避免纯文本正则解析。

如果你愿意,可以:

  • 贴一段你的 Node.js 日志示例
  • 或告诉我你用的是 winston / pino / pm2 / docker

我可以给你针对性的解析命令或方案

0