温馨提示×

如何导出Ubuntu Nodejs日志

小樊
42
2026-07-21 19:22:44
栏目: 编程语言

在 Ubuntu 上导出 Node.js 日志,常见做法取决于日志是写到哪里的。下面按最常见的几种场景给你完整说明。


一、Node.js 通过 console.log / console.error 输出(最常见)

Node.js 默认输出到 标准输出 stdout / 标准错误 stderr,在 Ubuntu 上通常可以通过:

1️⃣ 直接重定向到文件(适合手动启动)

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

说明:

  • >:标准输出
  • 2>&1:错误也写入同一文件

✅ 导出到 app.log


2️⃣ 后台运行并导出日志

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

查看日志:

tail -f app.log

二、使用 PM2 管理 Node.js(强烈推荐)

如果你用 PM2,日志管理非常方便。

1️⃣ 查看日志路径

pm2 logs

或查看指定应用:

pm2 logs app-name

2️⃣ 导出 / 查看日志文件

PM2 日志默认在:

~/.pm2/logs/

例如:

app-name-out.log
app-name-error.log

导出:

cp ~/.pm2/logs/app-name-out.log /backup/app.log

3️⃣ 实时导出日志

pm2 logs app-name --lines 1000 > export.log

三、Node.js 使用日志库(winston / pino 等)

如果你的代码里用了日志库,比如:

const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.File({ filename: 'app.log' })
  ]
});

直接导出日志文件

cat app.log
cp app.log /backup/

查看实时日志:

tail -f app.log

四、Systemd 管理的 Node.js 服务

如果是通过 systemd 启动的 Node.js:

1️⃣ 查看日志

journalctl -u your-node-service.service

2️⃣ 导出日志

journalctl -u your-node-service.service > node-logs.log

实时查看:

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

五、Docker 中的 Node.js(如果你用容器)

docker logs container_id > node.log 2>&1

实时:

docker logs -f container_id

六、常见实用命令汇总

需求 命令
实时查看 tail -f app.log
导出最近 1000 行 tail -n 1000 app.log > export.log
搜索错误 grep -i error app.log
按时间导出 sed -n '/2025-01-01/,/2025-01-02/p' app.log

七、推荐最佳实践 ✅

生产环境

  • 使用 PM2
  • systemd + winston
  • 日志按日期切割(logrotate)

避免

  • 只用 console.log
  • 日志无限写入不清理

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

  • Node.js 是怎么启动的?
  • 是否使用 PM2 / Docker / systemd?
  • 日志是 console.log 还是 winston?

我可以给你针对你环境的精确导出方案

0