温馨提示×

ubuntu nodejs日志如何收集

小樊
40
2026-10-06 11:34:41
栏目: 编程语言

在 Ubuntu 上收集 Node.js 日志,通常可以从应用层日志、系统层日志、进程管理工具日志、集中化收集几个层面来做。下面按常见场景给你一套实用方案。


一、Node.js 应用层日志(最基础)

1. 使用日志库(推荐)

不要只用 console.log,生产环境建议用日志库:

  • winston
  • pino(性能最好)
  • bunyan

示例(winston):

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.File({ filename: '/var/log/nodejs/app.log' }),
    new winston.transports.Console()
  ]
});

logger.info('server started');

日志建议输出到:

/var/log/nodejs/

二、使用 systemd 收集 Node.js 日志(非常推荐)

如果你用 systemd 管理 Node.js 服务(Ubuntu 默认):

1. 编写 systemd 服务

# /etc/systemd/system/node-app.service
[Unit]
Description=Node.js App
After=network.target

[Service]
User=node
WorkingDirectory=/opt/node-app
ExecStart=/usr/bin/node index.js
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app

[Install]
WantedBy=multi-user.target

2. 查看日志

journalctl -u node-app
journalctl -u node-app -f
journalctl -u node-app --since "2024-01-01"

✅ 优点:

  • 自动轮转
  • 与系统日志统一
  • 不需要自己管理文件

三、PM2 方式(常见 Node 部署方案)

如果你用 PM2:

pm2 start index.js --name my-app
pm2 logs
pm2 logs my-app

日志默认位置:

~/.pm2/logs/

集中日志:

pm2 install pm2-logrotate

四、Nginx 反向代理日志(如果有)

如果你用 Nginx:

/var/log/nginx/access.log
/var/log/nginx/error.log

查看:

tail -f /var/log/nginx/access.log

五、日志轮转(防止磁盘爆)

使用 logrotate

sudo nano /etc/logrotate.d/nodejs

示例:

/var/log/nodejs/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  copytruncate
}

六、集中化日志收集(进阶)

方案 1:ELK

  • Filebeat 收集
  • 发送到 Elasticsearch
  • Kibana 展示

方案 2:Loki + Grafana

  • 轻量
  • 适合云原生

方案 3:Fluent Bit

  • 资源占用低
  • 适合容器

七、推荐组合(生产最佳实践)

✅ 小型服务

  • Node + winston + systemd + journalctl

✅ 中型服务

  • Node + pino + PM2 + logrotate

✅ 大型 / 微服务

  • Node + pino + Filebeat + Elasticsearch / Loki

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

  • 是否用 Docker
  • 是否用 PM2 / systemd
  • 单机还是集群

我可以直接帮你写一套可落地的日志方案配置。

0 踩