温馨提示×

如何导出linux nodejs日志

小樊
33
2026-09-20 20:53:28
栏目: 编程语言

在 Linux 上导出 Node.js 日志,常见做法取决于日志是怎么产生的(控制台输出、文件、PM2、Docker 等)。下面按场景给你总结几种常用方式。


一、Node.js 直接输出到控制台(最常用)

1. 运行时重定向到文件

node app.js > app.log 2>&1
  • >:标准输出
  • 2>&1:错误输出也写入
  • 追加日志用 >>
node app.js >> app.log 2>&1

2. 后台运行并导出

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

二、使用 PM2(非常常见)

1. 查看日志

pm2 logs

2. 导出日志到文件

pm2 logs --out logs/out.log --error logs/err.log

3. 日志文件位置

~/.pm2/logs/

4. 合并导出

cat ~/.pm2/logs/app-out.log ~/.pm2/logs/app-error.log > all.log

三、Node.js 内部写日志文件(代码级)

示例(简单)

const fs = require('fs');

function log(msg) {
  fs.appendFileSync('app.log', `${new Date()} ${msg}\n`);
}

推荐:使用 Winston

npm install winston
const winston = require('winston');

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

logger.info('hello');

四、Docker 中的 Node.js 日志

1. 查看日志

docker logs <container_id>

2. 导出日志

docker logs <container_id> > app.log 2>&1

五、系统级(systemd)

如果 Node.js 是 systemd 服务:

journalctl -u node-app.service > app.log

实时导出:

journalctl -u node-app.service -f

六、常见导出技巧

按时间导出

grep "2026-01-21" app.log > today.log

实时跟踪

tail -f app.log

七、推荐方案(总结)

场景 推荐方式
本地调试 node app.js >> app.log
生产环境 PM2 + 日志文件
容器 Docker logs
系统服务 journalctl
结构化日志 Winston / Pino

如果你能告诉我:

  • 是不是用 PM2 / Docker / systemd
  • 日志现在是 控制台还是文件
  • 想要 实时还是历史导出

我可以直接给你一条最合适的命令。

0