温馨提示×

ubuntu nodejs日志怎样解析

小樊
44
2026-09-06 15:13:56
栏目: 编程语言

在 Ubuntu 上解析 Node.js 日志,通常取决于日志是怎么产生的(console、winston、pm2、docker 等)。下面按常见场景给你一套实用方案。


一、先确认日志在哪里

1. 直接运行 Node.js

node app.js

日志一般输出在终端,或你重定向到的文件:

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

2. 使用 PM2(最常见)

pm2 logs
pm2 logs app --lines 100

日志文件路径:

~/.pm2/logs/app-out.log
~/.pm2/logs/app-error.log

3. Docker

docker logs container_name
docker logs -f container_name

二、基础日志解析(命令行)

1. 实时查看

tail -f app.log

2. 查找错误

grep -i "error" app.log
grep -A 5 -B 5 "TypeError" app.log

3. 按时间过滤

awk '/2026-01-21 10:00/,/2026-01-21 11:00/' app.log

4. 统计错误次数

grep -c "Error" app.log

三、常见 Node.js 日志格式解析

1. console.log(非结构化)

Server started on port 3000
Error: connect ECONNREFUSED

解析方式:

grep "Error:" app.log

2. JSON 日志(推荐)

示例:

{"level":"error","time":"2026-01-21T10:00:00Z","msg":"db failed"}

解析:

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

3. Winston / Pino 日志

Winston 示例:

logger.error("user login failed", { userId: 1 });

日志:

error: user login failed userId=1

可用:

grep "user login failed" app.log

四、进阶:结构化日志分析

1. 使用 jq(JSON 日志)

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

2. 使用 ELK / Loki

  • Filebeat → Elasticsearch
  • Promtail → Loki + Grafana

适合生产环境。


五、Node.js 代码层建议(很重要)

✅ 使用结构化日志:

const pino = require("pino");
const logger = pino();

logger.info({ userId: 1 }, "user login");

✅ 不要只写 console.log


六、你可以告诉我

为了给你更具体的方案,可以补充:

  1. 用的是什么启动方式(node / pm2 / docker)
  2. 日志格式(文本 / JSON)
  3. 想做什么(排错 / 统计 / 实时监控)

我可以直接帮你写解析脚本或正则

0