温馨提示×

Ubuntu Nodejs日志如何导出

小樊
48
2026-08-05 09:36:47
栏目: 编程语言

在 Ubuntu 上导出 Node.js 日志,常见做法取决于你日志是如何产生的(console、文件、PM2、Docker、systemd 等)。下面按常见场景给你一套完整方案。


一、Node.js 直接输出日志(console.log / console.error)

1️⃣ 前台运行(临时)

node app.js > app.log 2>&1
  • > app.log:标准输出
  • 2>&1:错误也写入同一文件

✅ 适合临时调试


2️⃣ 后台运行

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

查看日志:

tail -f app.log

二、使用 PM2(最常见 ✅)

1️⃣ 查看日志

pm2 logs
pm2 logs app-name

2️⃣ 导出日志到文件

PM2 日志默认在:

~/.pm2/logs/

导出:

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

3️⃣ 实时导出

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

4️⃣ 修改日志路径(推荐)

ecosystem.config.js

module.exports = {
  apps: [{
    name: 'app',
    script: 'app.js',
    out_file: '/var/log/node/app-out.log',
    error_file: '/var/log/node/app-err.log',
    merge_logs: true,
    log_date_format: 'YYYY-MM-DD HH:mm:ss'
  }]
}

三、Node.js 写文件日志(winston / pino)

示例(winston)

const winston = require('winston');

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

logger.info('hello');

导出:

cp logs/app.log /backup/

四、systemd 管理的 Node.js 服务

查看日志

journalctl -u node-app.service

导出日志

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

实时查看

journalctl -u node-app.service -f

五、Docker 中的 Node.js

查看日志

docker logs container_id

导出

docker logs container_id > app.log 2>&1

六、按时间导出(实用)

导出最近 1 小时日志(journalctl)

journalctl -u node-app.service --since "1 hour ago" > app.log

导出某一天

journalctl -u node-app.service --since "2025-01-20" --until "2025-01-21"

七、推荐最佳实践 ✅

生产环境推荐组合

  • PM2 / systemd
  • 日志写入文件(winston)
  • 使用 logrotate 防止日志爆炸

logrotate 示例

/var/log/node/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
}

你可以直接告诉我:

  • ✅ Node.js 是如何运行的?(PM2 / systemd / Docker / 直接 node)
  • ✅ 现在日志在哪里?
  • ✅ 想导出全部还是最近一段时间?

我可以给你精确到命令级别的方案。

0