温馨提示×

ubuntu nodejs日志怎样分析

小樊
40
2026-09-21 18:18:02
栏目: 编程语言

在 Ubuntu 上分析 Node.js 日志,通常可以从日志来源、查看方式、常见问题分析、工具使用几个方面入手。下面给你一个实用指南。


一、Node.js 日志常见来源

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

Node.js 默认日志来自:

console.log()
console.error()
console.warn()

运行方式:

node app.js
# 或
npm start

2. 系统服务日志(systemd)

如果用 systemd 管理 Node 服务:

journalctl -u your-node-service.service -f

查看历史:

journalctl -u your-node-service.service --since "2024-01-01"

3. PM2 日志(非常常见)

如果用 PM2:

pm2 logs
pm2 logs app-name
pm2 logs --lines 200

日志文件位置:

~/.pm2/logs/

4. 应用自身日志文件

常见于:

/var/log/node/
./logs/

配合 winstonpinomorgan 等日志库。


二、基础日志查看命令(Ubuntu)

实时查看

tail -f app.log

查看错误

grep -i error app.log

按时间过滤

grep "2024-01-01 10:" app.log

统计错误数量

grep -c "Error" app.log

查看最近 100 行

tail -n 100 app.log

三、常见 Node.js 日志问题与分析

1. 内存泄漏

日志特征:

  • heap out of memory
  • 响应变慢
  • RSS 持续增长

分析:

node --max-old-space-size=1024 app.js

结合:

pm2 monit

2. 未捕获异常

日志:

TypeError: Cannot read properties of undefined

解决:

process.on('uncaughtException', e => {
  console.error(e);
});

3. 接口超时 / 请求失败

结合:

  • Nginx 日志
  • Node 访问日志(morgan)
tail -f /var/log/nginx/access.log

4. 数据库错误

常见:

ECONNREFUSED
ETIMEDOUT

检查:

systemctl status mysql
netstat -tulnp | grep 3306

四、推荐日志分析工具

轻量

  • less
  • grep
  • awk

进阶

  • PM2 + Keymetrics
  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Sentry(错误监控强烈推荐)

五、一个标准做法建议

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

如果你愿意,可以告诉我:

  • 你是用 PM2 / Docker / systemd
  • 日志是 控制台还是文件
  • 主要想分析 错误还是性能

我可以直接给你针对性的分析命令或脚本

0